组件,从概念上类似于 JavaScript 函数。它接受任意的入参(即 “props”),并返回用于描述页面展示内容的 React 元素。
函数组件与 class 组件
React可以通过 class 和 函数 两种形式创建组件, 但是在函数组件中打印this,我们获取的是undefined. 这个问题我们暂时先不讨论, 大家知道有这两种方式,接下来还是用我们熟悉的 class形式进行演示.
var msg = 'hello,world';class HelloWorld extends React.Component {render(){return (<div><h2>{msg}</h2></div>)}}// 通过调用React自身方法render可以得到当前组件的实例对象,并渲染到页面容器.ReactDOM.render(<HelloWorld />,document.getElementById('root'));
比如函数形式:
var msg = 'hello,world';function HelloWorld(){console.log(this); // undefinedreturn (<div><h2>{msg}</h2></div>)}// 通过调用React自身方法render可以得到当前组件的实例对象,并渲染到页面容器.ReactDOM.render(<HelloWorld />,document.getElementById('root'));
组合组件
组件可以随意组合和嵌套,我们把三个 <HelloWorld/>组件放到 <Demos /> 组件中,并且渲染<Demos /> 组件.
注意: 任何组件有且只有一个 根节点 .
var msg = 'hello,world';class HelloWorld extends React.Component {render(){return (<div><h2>{msg}</h2></div>)}}class Demos extends React.Component {render(){return (<div><HelloWorld/><HelloWorld/><HelloWorld/></div>)}}// 通过调用React自身方法render可以得到当前组件的实例对象,并渲染到页面容器.ReactDOM.render(<Demos />,document.getElementById('root'));
props给组件传参
props是组件的属性,可以通过props获取组件外部传递的属性和值. 可以同时传递多个参数,通过参数名称获取.
var msg = 'hello,world';class HelloWorld extends React.Component {render(){return (<div><h2>组件: {this.props.value}</h2>{this.props.componentName?<p>{this.props.componentName}</p>:<p>未命名</p>}</div>)}}class Demos extends React.Component {render(){return (<div><HelloWorld value={1} componentName="组件1"/><HelloWorld value={2}/><HelloWorld value={3}/></div>)}}// 通过调用React自身方法render可以得到当前组件的实例对象,并渲染到页面容器.ReactDOM.render(<Demos />,document.getElementById('root'));
Props 的只读性
组件无论是使用函数声明还是通过 class 声明,都决不能修改自身的 props。
