Reactjs 使用哪种生命周期方法
我有一个场景,在这个场景中,我有一个登录页,page-X,其中一个组件x1从fetch API调用中获取数据,我在Reactjs 使用哪种生命周期方法,reactjs,redux,Reactjs,Redux,我有一个场景,在这个场景中,我有一个登录页,page-X,其中一个组件x1从fetch API调用中获取数据,我在componentDidMount()方法中处理了这个调用,并且在获取数据之前,显示一个正在加载的gif 现在,当我在第X页上单击组件y1时,会打开一个模式,在关闭模式下,组件x1的加载gif会返回,看起来redux存储区已从我获取x1数据的位置清除(allallBatchesFromDB-见下文)? 那么,当我从模式返回时,是否需要再次进行api调用?如果是,我应该使用哪种生命周期
componentDidMount()
方法中处理了这个调用,并且在获取数据之前,显示一个正在加载的gif
现在,当我在第X页上单击组件y1时,会打开一个模式,在关闭模式下,组件x1的加载gif会返回,看起来redux存储区已从我获取x1数据的位置清除(allallBatchesFromDB-见下文)?
那么,当我从模式返回时,是否需要再次进行api调用?如果是,我应该使用哪种生命周期方法?
短暂性脑缺血发作
渲染部分:-
let allallBatchesFromDB = store.getState().batchFromDBReducer.batches;
(allallBatchesFromDB) ?
<div>
<Componentx1 />
</div>
:
<img width={40} height={40} src={loadinglinear}/>
}
减速器:
import {ACTIONS_TYPES} from '../Actions/action';
function batchFromDBReducer(state={batches:{},allBatchesFromDB:{},regressionBatchFromDB:{},segmentBatchFromDB:{},featureBatchFromDB:{}},action){
var bool =false ;
if(action.allBatchesFromDB){
bool = true ;
}
switch(action.type){
case ACTIONS_TYPES.FETCH_ALL_BATCH_FROM_DB_ALL_BUGS:
return {
batches: {
...state.batches,
[action.bugId]: action.batches
}
}
default:
return {
defaultBatchFromDB : state.regressionBatchFromDB
}
}
}
export default batchFromDBReducer;
最新编辑
我的构造函数中还有以下代码行:
store.subscribe(() => this.forceUpdate());
除了
FETCH\u ALL\u BATCH\u from\u DB\u ALL\u BUGS
在这段时间内是否有任何其他redux操作被调度?如果是这样,则会清除以前获取的数据,因为batchFromDBReducer
reducer中的默认处理程序不会扩展到以前的状态。使用以下内容更新默认句柄,并查看它是否解决了问题:
return {...state, defaultBatchFromDB : state.regressionBatchFromDB}
如果减速器打算以这种方式工作,则在模式关闭时,检查导致pageX中重新渲染的原因。如果是道具更改,您可以启动fetchin
组件willreceiveprops
。如果是状态更改,请在组件更新中执行相同的操作。您是使用不同的减速机进行两个还是单个减速机?显示redux tooadded my fetch api和reducer code的完整代码您是否在加载程序和组件之间切换?不切换,如果数据不存在,只显示加载程序谢谢,正如您所说,还有其他操作正在调度。因此,我现在为我的案例创建了一个新的reducer,现在存储完好无损。需要注意的关键是“这段时间内是否有其他redux操作被调度?如果有,将清除以前获取的数据作为默认处理程序”,所以我更改了reducer,以默认方式返回所需的数据
store.subscribe(() => this.forceUpdate());
return {...state, defaultBatchFromDB : state.regressionBatchFromDB}