3.React生命周期方法

2020-08-18  本文已影响0人  萘小蒽

当组件再次渲染时(非初始化),在render()方法前调用(在组建的props或者state发生改变时会触发该方法)。

render()函数执行完毕,且更新的组件已被同步到DOM后立即调用。(初始化不会触发)

在新节点插入DOM结构之前触发。

在新节点插入DOM结构之后触发。

在组件从DOM中移除时立刻触发。

var textAreaCounter = React.createClass({
        propType: {
            text: React.PropTypes.string.isRequired,
        },
        shouldComponentUpdate(newProps,newState){
           console.log("shouldComponentUpdate(触发)")
           return true
        },
        componentWillUpdate(){
            console.log("componentWillUpdate",arguments)
        },
        componentDidUpdate(){
            console.log("componentDidUpdate",arguments)
        },
        componentWillMount(){
            console.log("componentWillMount",arguments)
        },
        getDefaultProps: function () {
            return {
                text: 'nima'
            }
        },
        getInitialState:function(){
            return {
                text:this.props.text,
            }
        },
        _textChange:function(ev){
            this.setState({
                text:ev.target.value
            })
        },
        render: function () {
            console.log("render触发")
            return React.DOM.div(null,
                React.DOM.textarea(
                    {
                        //defaultValue:'默认值',  //设置默认值,且数据不受控制
                        value:this.state.text, //和defaultValue只能选择其一
                        onChange:this._textChange,
                    }
                ),
                React.DOM.h3(null, this.state.text.length)
            )
        },
    });
 var myTextAreaCounter =    ReactDOM.render(
        React.createElement(textAreaCounter, {
            text: 'Bob'
        }),
        document.getElementById('app'),
        function () {
            console.log("组件装载完毕")
        }
    )

这个方法在componentWillUpdate()之前触发,给你一个机会返回false以取消更新组件。

//该组件将不会再更新视图
shouldComponentUpdate(newProps,newState){
           console.log(newProps,newState)
           return false
  }

当你输入时:


上一篇下一篇

猜你喜欢

热点阅读