201-React顶级API
一、概述
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、转换元素
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的更多相关文章
- React Router API文档
React Router API文档 一.<BrowserRouter> 使用HTML5历史记录API(pushState,replaceState和popstate事件)的<Rou ...
- React 组件 API
React 组件 API 在本章节中我们将讨论 React 组件 API.我们将讲解以下7个方法: 设置状态:setState 替换状态:replaceState 设置属性:setProps 替换属性 ...
- React LifeCycle API
React LifeCycle API old API & new API 不可以混用 demo https://codesandbox.io/s/react-parent-child-lif ...
- [译]迁移到新的 React Context Api
随着 React 16.3.0 的发布,context api 也有了很大的更新.我已经从旧版的 api 更新到了新版.这里就分享一下我(作者)的心得体会. 回顾 下面是一个展示如何使用旧版 api ...
- React Native API之 ActionSheetIOS
ok!先来演示是下效果: 官网教程:http://reactnative.cn/docs/0.31/actionsheetios.html#content 上代码:引入API组件: import Re ...
- [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 ...
- React Context API
使用React 开发程序的时候,组件中的数据共享是通过数据提升,变成父组件中的属性,然后再把属性向下传递给子组件来实现的.但当程序越来越复杂,需要共享的数据也越来越多,最后可能就把共享数据直接提升到最 ...
- React 顶层 API
概览 组件 使用 React 组件可以将 UI 拆分为独立且复用的代码片段,每部分都可独立维护.你可以通过子类 React.Component 或 React.PureComponent 来定义 Re ...
- React顶层API
1.React.Children相关 1. React.Children.map(props.children, mapFunc) 1)该方法用于在props.children不透明的情况下,安全的遍 ...
随机推荐
- hadoop学习笔记之-hbase完全分布模式安装-5
http://blog.csdn.net/lichangzai/article/details/8441975 http://blog.csdn.net/jpiverson/article/detai ...
- 学习 TList 类的实现[8]
现在准备建立 Items 数组属性; 在 public 区输入下面代码:property Items[Index: Integer]: Pointer; 执行 Shift+Ctrl+C 后的代码是: ...
- Ubuntu 12.04.3 X64 使用 NFS 作为文件共享存储方式 安装 Oracle11g RAC
nfs-server 在 Ubuntu上可以选择 : nfs-kernel-server:如果在windows上,可以选择:haneWIN NFS Server nfs-client Ubuntu上使 ...
- 详解MathType快捷键使用技巧
巧妙使用MathType数学公式编辑器可加快数学符号的录入速度和效率,这将节约大量的时间成本,本教程将详解MathType快捷键使用的诸多技巧. 在MathType界面,将鼠标轻轻的放在某个符号上,在 ...
- 【java】java内存模型 (1)--基础
并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信 ...
- HDU 2594 Simpsons’ Hidden Talents (KMP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594 这题直接用KMP算法就能够做出来,只是我还尝试了用扩展的kmp,这题用扩展的KMP效率没那么高. ...
- linux安装nagios客户端
( 安装到 被监控的机器上)新增用户和组 useradd nagiosgroupadd nagcmd usermod -a -G nagcmd nagios (如果安装中报没有c编译器,就 yum i ...
- /etc/services
/etc/services文件是记录网络服务名和它们对应使用的端口号及协议,很多的系统程序要使用这个文件.一般情况下,不要修改该文件的内容,否则可能会造成端口冲突 常见的服务如下,各个字段分别表示:s ...
- (一)微信小程序之模拟调用后台接口踩过的坑
如下图标记的三个点 在调试过程中出现问题,特此记录. 1. 之前在浏览器测试接口习惯省略 http:// ,是因为浏览器默认有一个检测,在你输入的网址前面加http://,如果有就不加. 然而在微信小 ...
- java基础---->java多线程之Join(二)
如果主线程想等待子线程执行完成之后再结束,就可以使用join方法了.它的使用是等待线程对象销毁.今天我们就通过实例来学习一下多线程中join方法的使用.草在结它的种子,风在摇它的叶子.我们站着,不说话 ...