一、概述

  React是React库的入口点。如果您从<script>标记加载React,则这些顶级API可在React全局中使用。如果你使用npm的ES6,你可以写:import React from 'react',如果你使用npm的ES5,你可以写:var React = require('react').

二、简介

2.1、Components

  React组件让你可以将UI分成独立的,可重用的部分,并且可以独立思考每个部分。 React组件可以通过继承React.Component或React.PureComponent来定义。

2.2、创建React元素

  建议使用JSX来描述你的用户界面应该是什么样子。每个JSX元素只是用于调用React.createElement()的语法糖。如果您使用JSX,通常不会直接调用以下方法。

2.3、转换元素

  React提供了几个用于操作元素的API:

2.4、片段

  React还提供了一个组件,用于在没有包装的情况下呈现多个元素。

2.5、Refs

三、参考使用

3.1、React.Component

class Greeting extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}

3.2、React.PureComponent

  几乎与React.Component一致,区别是React.Component没有实现shouldComponentUpdate(),React.PureComponent用浅道具和状态比较来实现它。

  如果您的React组件的render()函数在给定相同的道具和状态的情况下呈现相同的结果,则可以使用React.PureComponent在某些情况下提高性能。

  注意:React.PureComponent的shouldComponentUpdate()仅浅显地比较对象。如果这些包含复杂的数据结构,则可能会对更深的差异产生假阴性结果。只有在您期望拥有简单的道具和状态时才可以扩展PureComponent,或者在知道深层数据结构发生变化时使用forceUpdate()。或者,考虑使用不可变对象以便快速比较嵌套数据。 此外,React.PureComponent的shouldComponentUpdate()会跳过整个组件子树的prop更新。确保所有儿童组件都是“纯”的。

3.3、createElement()

React.createElement(
type,
[props],
[...children]
)

3.4、cloneElement()

React.cloneElement(
element,
[props],
[...children]
)

createFactory()

  React.createFactory(type)返回一个生成给定类型的React元素的函数。与React.createElement()类似,type参数可以是标记名称字符串(例如'div'或'span'),React组件类型(类或函数)或React片段类型。这个帮助器被认为是遗留的,我们鼓励您直接使用JSX或直接使用React.createElement()。

3.5、isValidElement()

React.isValidElement(object)验证对象是一个React元素。返回true或false

3.6、React.Children

React.Children提供了用于处理this.props.children不透明数据结构的实用程序。

React.Children.map

  React.Children.map(children, function[(thisArg)]):调用此设置为thisArg的子项中包含的每个直接子项的函数。如果children是keyed片段或数组,它将被遍历:该函数永远不会传递容器对象。如果children为null或未定义,则返回null或undefined,而不是数组。

React.Children.forEach

  React.Children.forEach(children, function[(thisArg)]):像React.Children.map()一样,但不返回数组。

React.Children.count

  React.Children.count(children):返回子组件的总数,等于调用传递给map或forEach的回调次数。

React.Children.only

  React.Children.only(children):验证孩子只有一个孩子(一个React元素)并返回它。否则,此方法会引发错误。

React.Children.toArray

  React.Children.toArray(children):将子不透明数据结构作为平面数组返回给每个孩子。如果你想在你的渲染方法中操作子集合,这很有用,特别是如果你想在传递它之前重新排序或者分割this.props.children。

3.7、React.Fragment

React.Fragment组件允许您在render()方法中返回多个元素而不创建额外的DOM元素:

render() {
return (
<React.Fragment>
Some text.
<h2>A heading</h2>
</React.Fragment>
);
}

3.8、React.createRef

React.createRef创建一个可以通过ref属性附加到React元素的引用。

class MyComponent extends React.Component {
constructor(props) {
super(props); this.inputRef = React.createRef();
} render() {
return <input type="text" ref={this.inputRef} />;
} componentDidMount() {
this.inputRef.current.focus();
}
}

3.9、React.forwardRef

  React.forwardRef创建一个React组件,它将它接收的ref属性转发给树中下面的另一个组件。这种技术并不常见,但在两种情况下特别有用:

  React.forwardRef接受渲染函数作为参数。 React将使用props和ref作为两个参数来调用这个函数。这个函数应该返回一个React节点。

const FancyButton = React.forwardRef((props, ref) => (
<button ref={ref} className="FancyButton">
{props.children}
</button>
)); // You can now get a ref directly to the DOM button:
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;

201-React顶级API的更多相关文章

  1. React Router API文档

    React Router API文档 一.<BrowserRouter> 使用HTML5历史记录API(pushState,replaceState和popstate事件)的<Rou ...

  2. React 组件 API

    React 组件 API 在本章节中我们将讨论 React 组件 API.我们将讲解以下7个方法: 设置状态:setState 替换状态:replaceState 设置属性:setProps 替换属性 ...

  3. React LifeCycle API

    React LifeCycle API old API & new API 不可以混用 demo https://codesandbox.io/s/react-parent-child-lif ...

  4. [译]迁移到新的 React Context Api

    随着 React 16.3.0 的发布,context api 也有了很大的更新.我已经从旧版的 api 更新到了新版.这里就分享一下我(作者)的心得体会. 回顾 下面是一个展示如何使用旧版 api ...

  5. React Native API之 ActionSheetIOS

    ok!先来演示是下效果: 官网教程:http://reactnative.cn/docs/0.31/actionsheetios.html#content 上代码:引入API组件: import Re ...

  6. [React] Use the new React Context API

    The React documentation has been warning us for a long time now that context shouldn't be used and t ...

  7. React Context API

    使用React 开发程序的时候,组件中的数据共享是通过数据提升,变成父组件中的属性,然后再把属性向下传递给子组件来实现的.但当程序越来越复杂,需要共享的数据也越来越多,最后可能就把共享数据直接提升到最 ...

  8. React 顶层 API

    概览 组件 使用 React 组件可以将 UI 拆分为独立且复用的代码片段,每部分都可独立维护.你可以通过子类 React.Component 或 React.PureComponent 来定义 Re ...

  9. React顶层API

    1.React.Children相关 1. React.Children.map(props.children, mapFunc) 1)该方法用于在props.children不透明的情况下,安全的遍 ...

随机推荐

  1. jQuery语法小结(超实用)

    1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...

  2. jquery获取html元素的绝对位置和相对位置的方法

    绝对位置坐标: 代码如下: $("#elem").offset().top$("#elem").offset().left 相对父元素的位置坐标: 代码如下: ...

  3. ASIHttpRequest封装

    ASIHttpRequest是一个非常好的库,只是直接使用稍嫌麻烦,以下就尝试来封装一下吧. 思路:每次请求时,须要创建一个ASIHttpRequest对象,设置它的属性(url,delegate.p ...

  4. chrome JS 总结

    1. chrome 的 console 中不能添加本地文件 2. 下面的代码是在亚马逊的商品页面上添加一个 image, 点击之后触发 alert 函数. 其中 cBoxInner 是人工寻找到的标签 ...

  5. python2.0_s12_day10_Twsited异步网络框架

    Twsited异步网络框架 Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等. Package application Configu ...

  6. Linux tty 命令

    终端:终端(Terminal)也称终端设备,是计算机网络中处于网络最外围的设备(如键盘 .打印机 .显示器等),主要用于用户信息的输入以及处理结果的输出 TTY:TTY 是 Teletype(电传打字 ...

  7. osgEarth2.8加载矢量数据描边效果

    通过修改osgearth自带的agglite插件,实现矢量描边效果,可以自定义描边的颜色和宽度(单位像素) 测试文件osgearth_features.cpp #include <osg/Not ...

  8. git的常见问题

    今天把电脑清理了下再push就出问题了 ,报这个错Failed with error: fatal: unable to access 'https://git.oschina.net/dubo_/G ...

  9. 设计模式之抽象工厂模式(Java实现)

    “上次是我的不对,贿赂作者让我先讲来着,不过老婆大人大人有大量,不与我计较,这次还让我先把上次未讲完的应用场景部分给补充上去,有妻如此,夫复何求.”(说完,摸了摸跪的发疼的膝盖,咳咳,我发四我没笑!真 ...

  10. 禁止同一条ajax请求重复发出的方法

    在项目中,遇到的问题是: 四个tab发送四个不同的请求,当用户连续在不同的按钮之间来回切换时,会出现不清楚那条数据是需要展示的的问题,和当连续点击同一个按钮时,基本同时返回的数据会全都展示出来的问题. ...