元素(Elements)
元素(Elements)是React应用中最小的构建部件,用于描述能够在屏幕上看到的内容,如:
const element = <h1> Hello World ! </h1>
元素是构成组件的“材料”。
渲染元素到DOM
要渲染一个React元素到DOM上面需要有一个根节点,之后把他们传递给ReactDOM.render()方法。
<div id="root"></div> const element = <h1>Hello World!</h1>; ReactDOM.render( element,document.getElementById("root") );
更新已经渲染的元素
React元素是不可突变(immutable)的。一旦创建了一个元素,就不能更改其子元素或者属性。只能创建一个新的元素,通过传入ReactDOM.render()方法进行更新。
另外,React DOM在更新的时候,会将元素及其子元素与之前版本逐一逐级对比,只更新对应有变化的,并不会整体进行刷新。
组件(Components)
组件是整个UI实现中划分出来的一个个独立可复用的小部件,每个部件间互不干涉,可以单独设计。
组件可以通过接收属性(Props)输入从而返回对应的React元素,用以描述显示的内容。
组件的分类
-
函数式组件
function Welcome(props) { return <h1> Hi,{props.name} ! </h1>; }
-
类组件
class Welcome extends React.Component { render() { return <h1>Hello,{this.props.name}</h1>; } }
渲染组件
以函数式组件为例:
function Welcome(props) { return <h1>Hello,{props.name}</h1>; } const element = <Welcome name="Sara" />; ReactDOM.render( element,document.getElementById('root') );
当 React 遇到一个代表用户定义组件的元素时,它将 JSX 属性以一个单独对象的形式传递给相应的组件。 我们将其称为 "props" 对象。简单顺序如下:
我们调用了 ReactDOM.render() 方法并向其中传入了 <Welcome name="Sara" /> 元素。
React 调用 Welcome 组件,并向其中传入了 {name: 'Sara'} 作为 props 对象。
Welcome 组件返回 <h1>Hello,Sara</h1>。
React DOM 迅速更新 DOM ,使其显示为 <h1>Hello,Sara</h1>。
❤ 组件名称总是以大写字母开始。
另外,组件间可以进行引用嵌套。组件可以在它们的输出中引用其它组件。
❤ 组件必须返回一个单独的根元素。这就是为什么我们添加一个 <div> 来包含所有 <Welcome /> 元素的原因。