一、 元素渲染: eg. 只渲染已更新局部的数据
<script type="text/babel"> setInterval(() => { var user = { username: '王强', age: 30, date: new Date().toLocaleTimeString() } ReactDOM.render( <h1 name='guonan' className='red'>你好世界, {user.date}</h1>, document.getElementById('app') ), 1000 }) </script>
二、根本语法
React.createClass()新版本已不反对
函数式组件(无状态组件)
无生命周期
<script type="text/babel"> // 函数时标签 function Hello(props) { console.log(props) return <div> <h1>Hello, {props.name}</h1> <p>年龄:{props.age}</p> </div> } ReactDOM.render( <Hello name='王强' age='30'/>, document.getElementById('app') )</script>
React.Component
<script type="text/babel"> // React.Component class Hello extends React.Component{ render(){ console.log(this) return <h1>Hello {this.props.name},年龄:{this.props.age}</h1> } } ReactDOM.render( <Hello name='王强' age='30'/>, document.getElementById('app') )</script>
三、生命周期
- 组件初始化阶段
- 组件加载阶段
- 数据更新阶段
组件销毁阶段
<script type="text/babel"> // React.Component class Hello extends React.Component{ constructor(props){ // 初始化props super(props) // 初始化数据 this.state = { username: '王强', age: 550 } console.log('初始化构造函数') } // 数据加载阶段 componentWillMount(){ console.log('组件加载前') } componentDidMount(){ console.log('组件加载实现') } // 数据更新阶段 shouldComponentUpdate(){ console.log('数据是否须要更新') return true } componentWillUpdate(){ console.log('数据将要更新') } componentDidUpdate(){ console.log('数据更新实现') } updateUser = () => { this.setState({ username: '刘华强', age: 66 }) } render(){ console.log('组件加载或者数据更新') return <div> <h1>Hello 姓名:{this.state.username},年龄:{this.state.age}</h1> <button onClick={this.updateUser}>数据更新</button> </div> } } ReactDOM.render( <Hello/>, document.getElementById('app') )</script>
<script type="text/babel"> function Login(props) { return <button onClick={props.updateUser}>登录</button> } function Logout(props) { return <button onClick={props.updateUser}>退出</button> } // React.Component class App extends React.Component { state = { isLogin: false } // 数据加载阶段 componentWillMount() { console.log('组件加载前') } componentDidMount() { console.log('组件加载实现') } // 数据更新阶段 shouldComponentUpdate() { console.log('数据是否须要更新') return true } componentWillUpdate() { console.log('数据将要更新') } componentDidUpdate() { console.log('数据更新实现') } updateUser = () => { this.setState({ isLogin: !this.state.isLogin }) } render() { console.log('组件加载或者数据更新') let isLogin = this.state.isLogin return <div> <h1>Hello World</h1> {isLogin ? <Logout updateUser={this.updateUser}/> : <Login updateUser={this.updateUser}/>} <button onClick={this.updateUser}>数据更新</button> </div> } } ReactDOM.render( <App />, document.getElementById('app') ) </script>
四、React-Router
- 路由的根本配置
- 路由动静配置
- React Hooks & 路由Hooks