问题:实现redux(六)中的subscribe


  • 0

    动手实现Redux(六):Redux总结 中,贴出了一个完整的使用总结如下

    // 定一个 reducer
    function reducer (state, action) {
      /* 初始化 state 和 switch case */
    }
    
    // 生成 store
    const store = createStore(reducer)
    
    // 监听数据变化重新渲染页面
    store.subscribe(() => renderApp(store.getState()))
    
    // 首次渲染页面
    renderApp(store.getState()) 
    
    // 后面可以随意 dispatch 了,页面自动更新
    store.dispatch(...)
    

    我的疑问是

    // 监听数据变化重新渲染页面
    store.subscribe(() => renderApp(store.getState()))
    

    添加监听者时不用将旧的oldState保存吗,就是不应写成如下形式吗?

    store.subscribe(() => {
      const newState = store.getState() // 数据可能变化,获取新的 state
      renderApp(newState, oldState) // 把新旧的 state 传进去渲染
      oldState = newState // 渲染完以后,新的 newState 变成了旧的 oldState,等待下一次数据变化重新渲染
    })
    

登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待