道具未在反应组件中初始化
props is not initialized in react component
我开发了一个组件。在其中,我根据传递给它的 Id 加载数据;
我的项目组件代码看起来像
ItemStore.CallItem("TenantId",this.props.MetaItemId);
我的调用页面代码看起来像
<div className="box-body table-responsive no-padding list-relations" id="configureMM">
<Item MetaItemId={11} />
</div>
<div className="box-body table-responsive no-padding list-relations" id="configureMM">
<Item MetaItemId={12} />
</div>
但是两次它都会使用第一个 id 因为 this.props 包含第一个 MetaItemId 但理想情况下它应该在我调用 <Item MetaItemId={12} />
时重新初始化但它不是,任何人都可以让我知道什么我这里不见了?
如果 nextProps.MetaItemId !== this.props.MetaItemId
,你需要把 ItemStore.CallItem("TenantId",this.props.MetaItemId);
放在 componentWillReceiveProps
中,所以它应该看起来像这样
this.componentWillReceiveProps = function(nextProps) {
if (nextProps.MetaItemId !== this.props.MetaItemId){
ItemStore.CallItem("TenantId", nextProps.MetaItemId);
}
}
这会执行调用,但除非您在某处设置状态,否则您的组件不会更新,这取决于 ItemStore.CallItem 的作用。
我开发了一个组件。在其中,我根据传递给它的 Id 加载数据;
我的项目组件代码看起来像
ItemStore.CallItem("TenantId",this.props.MetaItemId);
我的调用页面代码看起来像
<div className="box-body table-responsive no-padding list-relations" id="configureMM">
<Item MetaItemId={11} />
</div>
<div className="box-body table-responsive no-padding list-relations" id="configureMM">
<Item MetaItemId={12} />
</div>
但是两次它都会使用第一个 id 因为 this.props 包含第一个 MetaItemId 但理想情况下它应该在我调用 <Item MetaItemId={12} />
时重新初始化但它不是,任何人都可以让我知道什么我这里不见了?
如果 nextProps.MetaItemId !== this.props.MetaItemId
,你需要把 ItemStore.CallItem("TenantId",this.props.MetaItemId);
放在 componentWillReceiveProps
中,所以它应该看起来像这样
this.componentWillReceiveProps = function(nextProps) {
if (nextProps.MetaItemId !== this.props.MetaItemId){
ItemStore.CallItem("TenantId", nextProps.MetaItemId);
}
}
这会执行调用,但除非您在某处设置状态,否则您的组件不会更新,这取决于 ItemStore.CallItem 的作用。