componentWillRecieveProps在某种情况下不适用于组件

时间:2019-03-05 11:24:24

标签: reactjs

我有一个自己制造的组件,而componentWillRecieveProps根本没有被调用。

我认为问题是我将组件放在父类的条件中,因为当我删除条件时,通常会调用componentWillRecieveProps,请不要误解我的组件在两种情况下都被渲染,仅此而已该函数没有调用我所做的任何事情,值得注意的是componentDidUpdate与我可以正常工作。

以下代码适用于我在父组件中创建的条件:

{this.state.mode != LISTMODE ? 
   <UserDetails
       userID = {this.state.choosenUserID}
       mode = {this.state.mode}
       changeUsersMode = {this.changeMode}/>
 : null}

,以下代码用于componentWillRecieveProps函数:

componentWillReceiveProps(nextProps){
    if(nextProps.mode == EDITMODE){
        this.setState({
            user:{
                ...this.state.user,
                userName : "Tamer",
                firstName : "Tamer",
                lastName : "Mohamed",
                registrationNumber : "1",
                genderID : 0,
                typeID : 1,
            }
        });
    }
}

我希望有人能帮助我弄清楚发生了什么事。

1 个答案:

答案 0 :(得分:0)

componentWillRecieveProps仅在安装的组件接收到新的道具之前被调用。就是说,如果您要使用基于状态的条件从DOM中删除组件,并且如果该组件由于状态变化而再次呈现,则该组件是新呈现的(即已安装)。该组件尚未处于更新阶段。