040_生命周期(旧)_forceU

强制更新

你可以不对组件里面的状态做更改,也可以更新组件的渲染

forceUpdate()

正常更新需要走阀门,但是强制更新,他不走阀门

// 定义组件
class Count extends React.Component {

    // 第一个调用的当然是构造器
    constructor(props) {
        console.log("count-constructor");
        super(props);
        // 初始化状态
        this.state = {count: 0}
        // 这里count 和类名 Count 没关系

    }

    //加1按钮的回调
    add = () => {
        // 获取原来的状态
        const {count} = this.state;
        // 更新状态
        this.setState({count: count + 1})
    };

    // 卸载组件按钮的回调
    death = () => {
        ReactDOM.unmountComponentAtNode(document.getElementById("test"))
    };
    // 强制组件按钮的回调
    force = () => {
        this.forceUpdate();
        // 阀门关了也能更新
    };



    // 组件将要挂载的钩子
    componentWillMount() {
        console.log("componentWillMount");
    }

    // 组件挂载完毕的钩子
    componentDidMount() {
        console.log("componentDitMount")
    }

    /*
    * 你如果不写,底层默认帮你返回一个true,如果您i要是自己写,一定要返回布尔
    * */

    // 控制组件更新的阀门
    shouldComponentUpdate() {
        console.log("shouldComponentUpdate");
        // 这里 必须要返回一个 布尔值
        return true;    // 返回true 就能正常走
        // return false;   // 返回 f 就凉了
    }

    // 组件将要更新的钩子
    componentWillUpdate() {
        console.log("componentWillUpdate");
    }
    // 组件将要更新的钩子
    componentDidUpdate() {
        console.log("componentDidUpdate");
    }

    render() {
        console.log("render")
        const {count} = this.state;
        return (
            <div>
                <h2>当前求和为:{count}</h2>
                <button onClick={this.add}>点我+1</button>
                <button onClick={this.death}>西在</button>
                <button onClick={this.force}>强制</button>
            </div>
        )
    }
}

//渲染组件
ReactDOM.render(<Count/>, document.getElementById('test'))


results matching ""

    No results matching ""