1.组件demo
组件是react最重要的功能,react的核心就是组件化开发我们的项目。
我们一个页面可以由n个div组成:那么同样我们把这n个div结构就可以划分成n个react组件,最后形成我们的页面。
我们要布局的页面包含:
header
center
footer
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import registerServiceWorker from './registerServiceWorker'; var arr=[ <div className="header">header</div>,<div className="center">center</div>,<div className="footer">footer</div> ] ReactDOM.render( <div> {arr} </div>,document.getElementById('root') ); registerServiceWorker();
我们把这三部分改为组件:
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import registerServiceWorker from './registerServiceWorker'; //设置组件 头 class Header extends React.Component { render() { return <div className="header">header</div>; } } //设置组件 中心 class Center extends React.Component { render() { return <div className="center">center</div>; } } //设置组件 尾部 class Footer extends React.Component { render() { return <div className="footer">footer</div>; } } ReactDOM.render( <div> <Header /> <Center /> <Footer /> </div>,document.getElementById('root') ); registerServiceWorker();
2.创建组件
2.1创建组件
组件采用类的继承方式创建:
//设置组件 头 class Header extends React.Component { render() { return <div className="header">header</div>; } }
类名首字母大写
2.2调用组建
<Header />
如同单标签的引用方式
3.组件传值和接收
3.1传值
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import registerServiceWorker from './registerServiceWorker'; //设置组件 头 class Header extends React.Component { render() { return <div className="header">header</div>; } } //设置组件 中心 class Center extends React.Component { render() { return <div className="center">center</div>; } } //设置组件 尾部 class Footer extends React.Component { render() { return <div className="footer">footer</div>; } } ReactDOM.render( <div> <Header name="小李子" /> <Center /> <Footer /> </div>,document.getElementById('root') ); registerServiceWorker();
3.2接收和显示
this.props.xx去接收:
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import registerServiceWorker from './registerServiceWorker'; //设置组件 头 class Header extends React.Component { render() { return <div className="header">header {this.props.name}</div>; } } //设置组件 中心 class Center extends React.Component { render() { return <div className="center">center</div>; } } //设置组件 尾部 class Footer extends React.Component { render() { return <div className="footer">footer</div>; } } ReactDOM.render( <div> <Header name="小李子" /> <Center /> <Footer /> </div>,document.getElementById('root') ); registerServiceWorker();
显现如下:
4.组件嵌套
4.1嵌套
创建一个组件:
//设置组件 显示性别 class HeaderShowSex extends React.Component { render() { return <span>性别:男</span>; } }
这个组件在header组件在中调用:
//设置组件 头 class Header extends React.Component { render() { return <div className="header">header {this.props.name}<HeaderShowSex /></div>; } }
显示如下:
4.2嵌套组件传值
我们在header组件调用位置把性别传到HeaderShowSex组件,
我们在header组件用this.props.sex获取,然后在HeaderShowSex组件调用位置用属性方式设置,在HeaderShowSex组件在用this.props.sex接收
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import registerServiceWorker from './registerServiceWorker'; //设置组件 头 class Header extends React.Component { render() { return <div className="header">header {this.props.name}<HeaderShowSex sex={this.props.sex} /></div>; } } //设置组件 显示性别 class HeaderShowSex extends React.Component { render() { return <span>性别:{this.props.sex}</span>; } } //设置组件 中心 class Center extends React.Component { render() { return <div className="center">center</div>; } } //设置组件 尾部 class Footer extends React.Component { render() { return <div className="footer">footer</div>; } } ReactDOM.render( <div> <Header name="小李子" sex="男" /> <Center /> <Footer /> </div>,document.getElementById('root') ); registerServiceWorker();
5.组件调用写法(单标签和闭合标签)
<Header name="小李子" sex="男" />
<Header name="小李子" sex="男"></Header>