gpt4 book ai didi

reactjs - componentWillReceiveProps 未触发

转载 作者:行者123 更新时间:2023-12-03 13:03:20 24 4
gpt4 key购买 nike

在我的其他类中,componentWillReceiveProps 工作得很好,但由于某种原因,它在这里没有触发。

ItemView.jsx

class ItemView extends React.Component {
constructor(props) {
super(props);

this.state = {
name: null,
rating: null,
sector: null,
location: null,
description: null,
image: "blank.png",
show: false
};
}

...

componentWillReceiveProps(nextProps) {

if(!nextProps.companyToRender) {
this.setState({
name: null,
rating: null,
sector: null,
location: null,
description: null,
image: "blank.png",
show: false
});
}
else {
var companyToRender = nextProps.companyToRender;

this.setState({
name: companyToRender.name,
rating: companyToRender.rating,
sector: companyToRender.sector,
location: companyToRender.location,
description: companyToRender.description,
image: companyToRender.image,
show: true
});
}

...

render () {
return(
<div>
...
<CommentBox show={this.state.show} companyToRender={this.state.name}/>
...
</div>
);

}
}

CommentBox.jsx

class CommentBox extends React.Component {
constructor(props) {
super(props);
this.state = {companyToRender: null};
}

componentWillReceiveProps(nextProps) {
this.setState({companyToRender: nextProps.companyToRender});
}

...
}

如果没有传递任何内容,传递给 itemView 的 prop 要么为 null,要么为 ItemView 分配给它的数组。

componentWillReceiveProps() 仅在状态的属性变为 null 时触发,但在设置时不会触发。 ( (null --> Entry) 不起作用,但 (entry --> null) 有效)。

我错过了什么吗?谢谢!

--编辑:

(null -->entry) 更新状态,但不调用日志或任何后续的 componentWillRecieveProps()。 (但是 Entry --> null 确实如此。)

Logs for null --> entry

Logs for entry --> null

最佳答案

经过多次痛苦的调试后,我发现问题在于 ItemView 是在模态(react-bootstrap)内部调用的,由于某种原因,该模态不支持 componentWillReceiveProps()。最终通过重构代码解决了问题。谢谢大家!

关于reactjs - componentWillReceiveProps 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40325715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com