第一种:纯组件形式引用,比如<组件名 />(推荐)
使用class定义了一个名为HeaderEs6的组件,然后在render方法中引入这个组件 <HeaderEs6 />,
如果有多个组件要引用,根据对应关系添加在<HeaderEs6 />前后即可
import React from 'react'; import ReactDOM from 'react-dom'; class HeaderEs6 extends React.Component { //constructor用来初始化组件属性,this.state定义数据,super()为了接收到父类的this指针 constructor(props) { super(props); this.state = { name: 'kevin', age: 29 } } handleClick() { this.setState({ age: this.state.age + 1 }); } onValueChange(e) { this.setState({ age: e.target.value }) } render() { return ( <div> <h1>I am {this.state.name}</h1> <p>I am {this.state.age} years old</p> <input onChange={(e) => { this.onValueChange(e) }} type="text" /> <button onClick={(e) => { this.handleClick(e) }}>加一岁</button> </div> ) } } ReactDOM.render( <div> <HeaderEs6 /> </div>, document.getElementById('app') );
第二种:容器式组件
容器式组件一般用在页面框架结构中,拼接页面个人还是推荐上面组件的形式,通俗易懂,化复为简
import React from 'react'; import ReactDOM from 'react-dom'; //props的作用,用来接收父组件传递过来的参数 class HeaderEs6 extends React.Component { //constructor用来初始化组件属性,this.state定义数据,super()为了接收到父类的this指针 constructor(props) { super(props); this.state = { name: 'kevin', age: 29 } } handleClick() { this.setState({ age: this.state.age + 1 }); } onValueChange(e) { this.setState({ age: e.target.value }) } render() { return ( <div> <h1>I am {this.state.name}</h1> <p>I am {this.state.age} years old</p> <input onChange={(e) => { this.onValueChange(e) }} type="text" /> <button onClick={(e) => { this.handleClick(e) }}>加一岁</button> </div> ) } } class Title extends React.Component { constructor(props) { super(props); } render() { // 这里的children表示由Title组件包含起来的部分 return <h1>{this.props.children}</h1> } } class App extends React.Component { render() { return ( <div> {/* 容器组件方式 */} {/* 所以这里可以用html标签的形式 */} <Title> <span>App span</span> <a href="#">link</a> </Title> <hr /> {/* 纯组件方式 */} <HeaderEs6 /> </div> ) } } ReactDOM.render( <div> <App /> </div>, document.getElementById('app') );
有需要的朋友可以领取支付宝到店红包,能省一点是一点