0

我正在尝试创建一个没有 ES6 优势的减速器。这是一个旧的 PHP 应用程序,没有构建过程可用于转译。

我正在初始化状态:

let defaultState =  {
    accountTypes: {
        personal: {
            selected: false,
            checking: {
                selected: false
            },
            savings: {
                selected: false
            }
        },
        business: {
            selected: false,
            checking: {
                selected: false
            },
            savings: {
                selected: false
            }
        }
    }
};

这是reducer,然后是store init:

function reducer(state, action) {
  switch (action.type) {
    case 'TOGGLE_ACCOUNT_TYPE':
      console.log(state.accountTypes);
      // {
      //   business: {selected: false, checking: {…}, savings: {…}}
      //   personal: {selected: true}
      // }

      console.log(action.payload);
      // {
      //   personal: {selected: true}
      // }

      let blah = Object.assign({}, state, {
        accountTypes: Object.assign({}, state.accountTypes, action.payload)
      });

      console.log(blah.accountTypes);
      // {
      //   business: {selected: false, checking: {…}, savings: {…}}
      //   personal: {selected: true}
      // }

      return blah;

    default:
      return state;
  }
}

const store = Redux.createStore(reducer, defaultState);
let state = store.getState();

稍后在 jQuery 中订阅状态document.ready

store.subscribe(function () {
    console.log(state.accountTypes);
    // {
    //    business: {selected: false, checking: {…}, savings: {…}}
    //    personal: {selected: false, checking: {…}, savings: {…}}
    // }

您可以看到状态未使用操作负载更新。

4

1 回答 1

2

我想我只是偶然发现了我的答案。发布这个问题引起了一些松散的事情。我为我的 jQuery 操作使用了一个陈旧的状态变量。

store.subscribe(function () {
    // update the state var
    state = store.getState();

如果有更好的方法来使用状态变量而无需手动刷新它,请发布另一个答案。

于 2019-02-06T20:02:19.403 回答