为什么在执行处理程序之前调用React componentDidMount?

时间:2018-01-03 06:04:35

标签: reactjs react-router-v4

我有以下反应代码,其中调用处理程序(因为在render()函数中呈现了一个Route)在componentDidMount之后。我原本认为在渲染发生后和动作方法之后会调用componentDidMount。

handler() {
    console.log('RouteCls:handler setting state true');
    this.setState({
        routeNotFound: true
    });
}

componentDidMount() {
    console.log('RoutesCls:cdm:' + this.state.routeNotFound);
    this.props.action(this.state.routeNotFound);
}


render() {
    return (
        <div>
            <Switch>
                <Route exact path="/" component={Home}/>
                <Route exact path="/speakers" component={Speakers}/>
                <Route exact path="/login" component={Login}/>
                <Route render={props => <RouteNotFound action={this.handler}  />}></Route>
            </Switch>
            <div> in RoutesCls: { JSON.stringify(this.state, null, 2) }</div>
        </div>
    );
}

1 个答案:

答案 0 :(得分:0)

comonentDidMount在render()函数之后立即被调用herehere。之后调用所有函数。