We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
一个简单的 React.createElement 例子:
React.createElement
ReactDOM.render( React.createElement( 'div', null, 'Hello Bottle' ), document.getElementById('root'), );
React.render 与 React.createElement 是 React 最核心的 API 方法,每一个 React 项目都必须要引入这两个API。
React.render
这基本上是React应用程序进入浏览器DOM 的入口点。它有两个参数:
什么是React元素?它是描述DOM元素的 Virtual 元素。是 React.createElement API方法返回的内容。
在React中,我们不使用字符串来表示DOM元素(如上面的本机DOM示例中),而是使用对方法的调用来表示带有对象的 DOM元素React.createElement。这些对象称为React元素。
该React.createElement函数有很多参数:
div
id
href
title
null
React元素在内存中创建。为了实际在DOM中显示一个React元素,我们使用这个ReactDOM.render方法来做很多事情来找出将React元素的状态反映到浏览器中的实际DOM树中的最佳方法。
ReactDOM.render
所有我们自定义的 React 元素首字母必须是大写,因为,JSX编译器(如Babel)会将所有以小写字母开头的名称视为HTML元素的名称。
// HTML 元素以字符串的形式,传递给 React.createElement 调用 React.createElement("input", null) // React 元素以变量的形式,传递给 React.createElement 调用 React.createElement(Input, null)
使用函数组件时,通常我们将属性列表命名为 props(标准做法) ,同时也可以使用解构的方法来编写:
function Hello({name}) { return ( <div>{name}</div> ) } ReactDOM.render( <Hello name='Bottle' /> document.getElementById('root'), );
请注意,props 是可选的。有些组件没有 props。但是,组件的返回值是必须的。React 组件不能返回 undefined(显式或隐式)。它必须返回一个值。它可以返回 null以使渲染器忽略其输出。
undefined
可选的第三个参数以及它后面的所有可选参数,形成渲染元素的子列表。元素可以包含0个或更多子元素。
React.createElement 是创建一个 React 元素,它与 React 组件 是不同的:
当我们告诉React在浏览器中渲染元素树时,它首先生成该树的虚拟表示并将其保留在内存中以供日后使用。然后它将继续执行DOM操作,使树显示在浏览器中。
当我们告诉React更新它先前渲染的元素树时,它会生成更新树的新虚拟表示。现在React在内存中有2个版本的树!
要在浏览器中呈现更新的树,React不会丢弃已呈现的内容。相反,它将比较它在内存中的2个虚拟版本,计算它们之间的差异,找出主树中需要更新的子树,并且只在浏览器中更新这些子树。
这个过程就是所谓的树协调算法,它使React成为使用浏览器DOM树的一种非常有效的方法。
这是React的智能差异算法。它只在主DOM树中更新实际需要更新的内容,同时保持其他所有内容相同。这种差异化过程是可能的,因为它在内存中保留了React的虚拟DOM表示。无论UI视图需要重新生成多少次,React将只向浏览器提供所需的“部分”更新。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
一、createElement 用法
一个简单的
React.createElement
例子:React.render
与React.createElement
是 React 最核心的 API 方法,每一个 React 项目都必须要引入这两个API。ReactDOM.render
这基本上是React应用程序进入浏览器DOM 的入口点。它有两个参数:
什么是React元素?它是描述DOM元素的 Virtual 元素。是
React.createElement
API方法返回的内容。React.createElement
在React中,我们不使用字符串来表示DOM元素(如上面的本机DOM示例中),而是使用对方法的调用来表示带有对象的 DOM元素
React.createElement
。这些对象称为React元素。该
React.createElement
函数有很多参数:div
在此示例中。id
,href
,title
,等),我们想要的DOM元素有。div
我们使用的简单没有属性,所以我们null
在那里使用。React元素在内存中创建。为了实际在DOM中显示一个React元素,我们使用这个
ReactDOM.render
方法来做很多事情来找出将React元素的状态反映到浏览器中的实际DOM树中的最佳方法。1. 标记
所有我们自定义的 React 元素首字母必须是大写,因为,JSX编译器(如Babel)会将所有以小写字母开头的名称视为HTML元素的名称。
2. 参数/属性
使用函数组件时,通常我们将属性列表命名为 props(标准做法) ,同时也可以使用解构的方法来编写:
请注意,props 是可选的。有些组件没有 props。但是,组件的返回值是必须的。React 组件不能返回
undefined
(显式或隐式)。它必须返回一个值。它可以返回null
以使渲染器忽略其输出。3. DOM 元素的内容
可选的第三个参数以及它后面的所有可选参数,形成渲染元素的子列表。元素可以包含0个或更多子元素。
React.createElement 与 React Component
React.createElement
是创建一个 React 元素,它与 React 组件 是不同的:当我们告诉React在浏览器中渲染元素树时,它首先生成该树的虚拟表示并将其保留在内存中以供日后使用。然后它将继续执行DOM操作,使树显示在浏览器中。
当我们告诉React更新它先前渲染的元素树时,它会生成更新树的新虚拟表示。现在React在内存中有2个版本的树!
要在浏览器中呈现更新的树,React不会丢弃已呈现的内容。相反,它将比较它在内存中的2个虚拟版本,计算它们之间的差异,找出主树中需要更新的子树,并且只在浏览器中更新这些子树。
这个过程就是所谓的树协调算法,它使React成为使用浏览器DOM树的一种非常有效的方法。
这是React的智能差异算法。它只在主DOM树中更新实际需要更新的内容,同时保持其他所有内容相同。这种差异化过程是可能的,因为它在内存中保留了React的虚拟DOM表示。无论UI视图需要重新生成多少次,React将只向浏览器提供所需的“部分”更新。
The text was updated successfully, but these errors were encountered: