Redux - Loading initial state asynchronously

前端 未结 3 732
遥遥无期
遥遥无期 2021-02-19 02:48

I\'m trying to work out the cleanest way to load the initial state of my Redux stores when it comes from API calls.

I understand that the typical way of providing the in

3条回答
  •  自闭症患者
    2021-02-19 02:56

    I also encountered the same problem (also building an electron app). A part of my store has application settings which gets persisted on local file system and I needed to load it asynchronously on application's startup.

    This is what I come up with. Being a "newbie" with React/Redux, I am very much interested in knowing the thoughts of the community on my approach and how it can be improved.

    I created a method which loads the store asynchronously. This method returns a Promise which contains the store object.

    export const configureStoreAsync = () => {
      return new Promise((resolve) => {
        const initialState = initialStoreState;//default initial store state
        try {
            //do some async stuff here to manipulate initial state...like read from local disk etc. 
            //This is again wrapped in its own Promises.
            const store = createStore(rootReducer, initialState, applyMiddleware(thunk));
            resolve(store);
          });
        } catch (error) {
          //To do .... log error!
          const store = createStore(rootReducer, initialState, applyMiddleware(thunk));
          console.log(store.getState());
          resolve(store);
        }
      });
    };
    

    Then in my application entry point, here's how I used it:

    configureStoreAsync().then(result => {
      const store = result;
      return ReactDOM.render(
        
          
        ,
        document.getElementById('Main'));
    });
    

    Like I said, this is my naive attempt at solving this problem and I am sure there must be better ways of handling this problem. I would be very much interested in knowing how this can be improved.

提交回复
热议问题