道具未在反应组件中初始化

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 的作用。