Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用哪种生命周期方法_Reactjs_Redux - Fatal编程技术网

Reactjs 使用哪种生命周期方法

Reactjs 使用哪种生命周期方法,reactjs,redux,Reactjs,Redux,我有一个场景,在这个场景中,我有一个登录页,page-X,其中一个组件x1从fetch API调用中获取数据,我在componentDidMount()方法中处理了这个调用,并且在获取数据之前,显示一个正在加载的gif 现在,当我在第X页上单击组件y1时,会打开一个模式,在关闭模式下,组件x1的加载gif会返回,看起来redux存储区已从我获取x1数据的位置清除(allallBatchesFromDB-见下文)? 那么,当我从模式返回时,是否需要再次进行api调用?如果是,我应该使用哪种生命周期

我有一个场景,在这个场景中,我有一个登录页,page-X,其中一个组件x1从fetch 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}