Reactjs 为什么在React Flux中执行请求之前组件卸载

Reactjs 为什么在React Flux中执行请求之前组件卸载,reactjs,flux,Reactjs,Flux,我正在使用React Flux构建一个应用程序。我有一个父组件a,一个子组件B和另一个组件C,它被a和B同时调用 问题是当直接从A调用C时,数据被正确装载、运行和卸载。当从B调用相同的组件时,会装载和卸载组件,但会在卸载组件后执行GET请求。为什么会发生这种情况 这是C组件 classnameday扩展组件{ 构造函数(){ 超级(); 此.state={ saints:AppStore.getNames(), } this.onChange=this.onChange.bind(this);

我正在使用React Flux构建一个应用程序。我有一个父组件
a
,一个子组件
B
和另一个组件
C
,它被
a
B
同时调用

问题是当直接从
A
调用
C
时,数据被正确装载、运行和卸载。当从
B
调用相同的组件时,会装载和卸载组件,但会在卸载组件后执行GET请求。为什么会发生这种情况

这是
C
组件

classnameday扩展组件{
构造函数(){
超级();
此.state={
saints:AppStore.getNames(),
}
this.onChange=this.onChange.bind(this);
}
组件willmount(){
AppStore.addChangeListener(this.onChange);
}
componentDidMount(){
AppActions.getNames();
} 
onChange(){
这是我的国家({
saints:AppStore.getNames(),
});
}
组件将卸载(){
AppStore.removeChangeListener(this.onChange);
}
render(){
让日期=[];
this.state.saints.map((saint,i)=>{
saint.names.map((name,j)=>{
if(name==firstName){
日期推送(圣日);
}
返回日期;
});
返回null;
});
让选项=。。。。
返回(
选项
);
}
}
当从
B
组件调用
Nameday
组件时,根本不执行
onChange
功能

这是父组件:

类ParentListItem扩展组件{
建造师(道具){
超级(道具);
此.state={
家长:this.props.parent,
}
this.onNamedayChange=this.onNamedayChange.bind(this);
}
onNamedayChange(日期、id、父项、索引){
让newParent={
firstName:this.props.parent.firstName,
lastName:this.props.parent.lastName,
电话:this.props.parent.phone,
电子邮件:this.props.parent.email,
生日:这个。道具。父母。生日,
命名日:{
nameday_id:id,
日期:日期:,
},
};
AppActions.updateParent(this.props.parent.\u id.$oid,
更新(this.props.parent,{$merge:newParent});
}
render(){
const{parent}=this.props;
返回(
{parent.phone}
{parent.email}
{家长生日}
//这是从ParentListItem.js和ConnectionListItem.js调用的组件
//这是子组件
);
}
}
导出默认的ParentListItem;

您是否已检查该操作是否已启动?在componentDidMount中登录console.log,以查看它是否真的装载了。可能是NameDay组件已经装入。是的,操作已启动。我得到的操作顺序是:wil mount、did mount、unmounted和XHR finished loading:get…Something在代码中卸载组件。您需要查看是什么将其卸载。当从B调用组件C时,组件C是留在视图中还是消失?代码中的某些内容正在卸载它,我不确定是否可以从您提供给我们的代码中确定它。我首先想,如果返回null,组件将卸载。但事实不应该如此。可能在B中,您正在侦听同一个存储,然后当存储内容因父组件的CI触发的操作而更改时,不呈现该组件。子组件
ConnectionListItem
与父组件类似,并且还呈现
Nameday
组件。我不知道这里是否存在竞争条件问题,但如果我从父级删除
Nameday
组件,问题仍然存在。在B我在听同一家商店的节目,是的。