Состояние Redux не меняется после отправки на следующий js - PullRequest
0 голосов
/ 20 сентября 2018

Я новичок в следующем js, и я использую redux-next-wrapper!

Проблема в том, что я хочу отправить токен, но когда я делаю это в getInitialProps, хранилище не обновляется после рендеринга страницы!

Я пытаюсь использовать componentDidMount, он работает, но состояние обновляется только после рендеринга страницы, что делает видимой кнопку входа в систему за одну секунду до того, как ее заменить выходом из системы!

  componentDidMount () {
    const token_access = Cookies.get('xxxxxxxxxx');
    const token_refresh = Cookies.get('xxxxxxxxxx');
    console.log(token_access);
    if (token_access && token_refresh) {
      const decode = jwt_decode(token_refresh);
      if (decode.exp >= new Date()) {
        this.props.store.dispatch(logout(token_refresh))
      }
      else {
        const decode_access = jwt_decode(token_access);
        if (decode_access.exp >= new Date()) {
          refresh(token_refresh)
        }
        this.props.store.dispatch(userLoggedIn(token_access));
      }
    }
  }

  static async getInitialProps ({Component, ctx}) {
    const token = '12345';
    ctx.store.dispatch(userLoggedIn(token));
    return {
      pageProps: (Component.getInitialProps ? await Component.getInitialProps(ctx) : {})
    }
  }

import { createStore, applyMiddleware } from 'redux'
import { composeWithDevTools } from 'redux-devtools-extension';
import thunk from 'redux-thunk';
import rootReducer from '../reducers/index'

export default initialState => createStore(
  rootReducer,
  composeWithDevTools(
    applyMiddleware(thunk)
  )
);

Есть ли способ отправить и загрузить хранилище перед визуализацией страницы?

Спасибо за ваш ответ

1 Ответ

0 голосов
/ 24 сентября 2018

Я исправляю эту проблему, меняя магазин!Надеюсь, это поможет кому-то:)

export const initStore = (initialState = {} ) => {
  return createStore(rootReducer,
    initialState, composeWithDevTools(applyMiddleware(thunk)))
};
...