Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 儿童如何';道具更新了吗?_Javascript_Reactjs - Fatal编程技术网

Javascript 儿童如何';道具更新了吗?

Javascript 儿童如何';道具更新了吗?,javascript,reactjs,Javascript,Reactjs,我是个新手,仍然在努力学习如何更新道具,以及更新是在什么生命周期方法中进行的。下面是我写的一些代码: export default Parent extends Component { constructor(props) { super(props); this.state = { name: "Tom" } } changeName = () => { this.setState({ name: "

我是个新手,仍然在努力学习如何更新道具,以及更新是在什么生命周期方法中进行的。下面是我写的一些代码:

export default Parent extends Component {
   constructor(props) {
    super(props);
    this.state = {
      name: "Tom"
    }
  }

  changeName = () => {
    this.setState({ name: "Jerry" });
  }
   
  render() {
    return <div>
             <Child name={this.state.name}/>
             <button onClick={this.changeName }>Change Name</button>
          </div>
  }
}
  
  
export default Child extends Component {
  ...
  shouldComponentUpdate(newProps, newState) {
     console.log("old name is" + this.props.name)
     console.log("new name is" + newProps.name)
     return true;
  }

  render() {
     return <p>{this.props.name}</p>
  }
}
这样的生命周期方法存在吗?我知道名称不匹配,但是否有一个生命周期方法可以实现上述功能?

不,没有这样的方法


将道具分配给
是在生命周期方法之间(在
shouldComponentUpdate
之后,在
呈现
之前)由库本身进行的,并且没有公共界面可以干扰该过程。

如果您正在搜索方法:上面的代码不起作用。是一个有效的解决方案,而不是类组件。@MattCroak我的代码中可能有一些拼写错误,这可能不起作用,但这不是重点。我想知道这个道具什么时候能拿到updated@secondimagereact的工作方式是将父组件的状态传递给子组件(即道具)。在父对象中更新子对象的道具时,子对象的道具也会更新。你试图在上面描述的生命周期方法不是一件事。你仍然不明白,兄弟,检查Aprillion的答案,这就是我想要的。那么为什么单击按钮后,
this.props.name
不是shouldComponentUpdate()中的最新名称,您能解释一下吗?那个家长不是也已经被更新了吗?
afterShouldComponentUpdate(newProps, newState){
   ...
   this.props = newProps;
}