Redux 状态在下一个 js 调度后不会改变

Posted

技术标签:

【中文标题】Redux 状态在下一个 js 调度后不会改变【英文标题】:Redux state don't change after dispatch on next js 【发布时间】:2019-02-24 03:56:11 【问题描述】:

我是下一个 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】:

我通过更改商店来解决此问题!希望这对某人有帮助:)

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

【讨论】:

以上是关于Redux 状态在下一个 js 调度后不会改变的主要内容,如果未能解决你的问题,请参考以下文章

调度操作后 Redux 状态未更新

Java - 方法调用后对象状态不会改变[重复]

调度操作时未调用redux connect mapStateToProps

Redux 状态不会随着动作调度而更新

Redux 调用 dispatch 函数但它不会改变 store

redux状态管理器使用总结