react学习之路(二)

来源:互联网 发布:淘宝小号信用查询网站 编辑:程序博客网 时间:2024/05/02 02:15

1、写一个简单的demo

class Son extends React.Component{constructor(props){        super(props);            }render(){return (<div><span>{this.props.message}</span><br/><input type="text" value={this.props.message} onChange={this.props.upstate} /></div>)}}class Father extends React.Component{constructor(props){super(props);this.state = {father_v : 'father',};}handleInput(e){this.setState({father_v : e.target.value,});}render(){return (<div><Son message = {this.state.father_v} upstate = {this.handleInput.bind(this)}></Son></div>)}}ReactDOM.render(<Father />,document.getElementById("app"))

最后的效果


通过onchange监听输入框输入,子组件通过

onChange={this.props.upstate}
调用父组件传过来的函数,然后用setState设置state,视图更新。


2、组件的生命周期

class Father extends React.Component{constructor(){super();this.state = {count : 1,};this.componentWillUnmount = this.componentWillUnmount.bind(this);}componentWillMount(){console.log("componentWillMount");let timer = setInterval(() => {this.setState({count:++this.state.count})}.bind(this) ,1000);}componentDidMount(){console.log("componentDidMount");}componentWillUnmount(){console.log("componentDidMount");}componentWillUpdate(){console.log("componentWillUpdate");}componentDidUpdate(){console.log("componentDidUpdate");}killComponent(){ReactDOM.unmountComponentAtNode( document.getElementById("app") );}render(){return (<div><button onClick = {this.killComponent.bind(this)}>卸载组件</button><Son message = {this.state.count} ></Son></div>);}}class Son extends React.Component{constructor(){        super();            }    componentWillReceiveProps(nextProp){    console.log("componentWillReceiveProps")    }    shouldComponentUpdate(){console.log("shouldComponentUpdate");return true;}render(){return (<div><span>{this.props.message}</span><br/></div>)}}ReactDOM.render(<Father />,document.getElementById("app"))

网络请求可以componentDidMount中来执行,效果如下,数字隔一秒加一



原创粉丝点击