我正在尝试将值传递给子组件。我得到的值来自于我在父组件中调用并在componentDidMount中调用的API,但问题是子组件没有读取我在他自己的componentDidMount中传递的道具,即使它只是空白在reactdevtool中,它传递正确的值。我之前已经解决了这个问题,但不记得我做了什么可以帮助您。谢谢
孩子:
componentDidMount() {
const {
events
} = this.props;
console.log(events)
}
父母:
class App extends Component {
componentDidMount() {
let self = this;
GetAllMainItems().then(function(GetAllMainItemsResults) {
let MainObject = self.state.MainObject;
self.setState({
GetAllMainItemsResults
});
}
}
render() {
constructor() {
super();
this.state = {
MainObject: []
};
}
return ( <
div className = "App row" >
<
Calendar events = {
this.state.MainObject
}
/>
<
/div>
);
}
答案 0 :(得分:2)
您遇到的问题是子组件在收到新的events
道具时正在重新渲染。
尝试添加componentDidUpdate
方法以查看这些道具的更新:
componentDidUpdate(prevProps, prevState) {
console.log(prevProps, prevState);
console.log('events:', prevProps.events, this.props.events);
}
答案 1 :(得分:2)
您需要检查一些内容。
constructor
应该在render
方法之外。 let self = this
。您只需在那里this.setState({...})
。GetAllMainItems
回调。我不知道你会得到什么
那里。但是您绝对不会将mainObject设置为您的状态。
相反,您将拥有this.state.GetAllMainItemsResults。建议
希望有帮助。
父组件 ```
class App extends Component {
state = {
mainObject: ""
};
componentDidMount() {
GetAllMainItems().then(response => {
this.setState({
mainObject: response
});
});
}
render() {
const { mainObject } = this.state;
return (
<div className="App row">
<Calendar events={mainObject} />
</div>
);
}
}