【发布时间】:2019-04-18 21:31:54
【问题描述】:
我有一个父组件将状态作为道具传递给子组件。在父组件中使用 componentDidMount 在页面加载时调用 API,并且传递给子组件的数据的初始状态会发生变化。更改会反映在父组件中,但不会反映在子组件中。
这是我的代码的摘录:
loan.js(父)
<ForecloseBtn id={this.state.lead_id} foreclose={this.state.isForeclosed }/>
ForecloseBtn.js(儿童)
import React from 'react';
import { render } from 'react-dom';
class ForecloseBtn extends React.Component {
constructor(props) {
super(props);
console.log(this.props);
this.state = {
lead_id: this.props.id,
isForeclosed: this.props.foreclose,
};
}
render() {
return (
......
)
}
};
export default ForecloseBtn;
所以在这里,lead_id 和 isForeclosed 的状态在父组件中发生了变化,但在子组件中没有发生变化。如何在子组件中也进行状态更新?
【问题讨论】:
-
能否添加父级
componentDidMount的代码 -
使用
memoize函数,该函数仅在道具发生变化时再次运行。或者更好:使您的组件成为一个完全受控的组件并删除任何这样的逻辑。您可以直接使用道具。 -
read this 这会有所帮助
-
子状态不会更新。你可以在任何你想要的地方直接使用 this.props
标签: javascript reactjs jsx