1

奇妙なバグがあるようです。私は現在 Redux を同形で使用してredux-thunkおり、非同期アクションのミドルウェアとしても含めています。私のストア構成は次のようになります。

// Transforms state date from Immutable to JS
const transformToJs = (state) => {
  const transformedState = {};

  for (const key in state) {
    if (state.hasOwnProperty(key)) transformedState[key] = state[key].toJS();
  }
  return transformedState;
};


// Here we create the final store,
// If we're in production, we want to leave out development middleware/tools
let finalCreateStore;
if (process.env.NODE_ENV === 'production') {
  finalCreateStore = applyMiddleware(thunkMiddleware)(createStore);
} else {
  finalCreateStore = applyMiddleware(
    createLogger({transformer: transformToJs}),
    thunkMiddleware
  )(createStore);
}

// Exports the function that creates a store
export default function configureStore(initialState) {
  const store = finalCreateStore(reducers, initialState);

  if (module.hot) {
    // Enable Webpack hot module replacement for reducers
    module.hot.accept('.././reducers/index', () => {
      const nextRootReducer = require('.././reducers/index');
      store.replaceReducer(nextRootReducer);
    });
  }

  return store;
}

これについての奇妙な部分は、私のファイルがうまく適用されているので、このファイルに何か問題があるとは思わないということですcreateLogger。すべてのアクションと状態をログアウトしますが、アクション クリエーターでオブジェクトではなく関数を返すと、実行が失われます。私はdebuggerステートメントを投げてみましたが、ヒットすることはなく、ミドルウェアの並べ替えも役に立たないようです。

createUser(data) {
    // This `debugger` will hit
    debugger;
    return (dispatch) => {
     // This `debugger` will NOT hit, and any code within the function will not execute
      debugger;
      setTimeout(() => {
        dispatch(
          AppActionsCreator.createFlashMessage('yellow', 'Works!')
        );
      }, 1000);
    };
  },

誰かが前にこのようなことを経験したことがありますか?

4

1 に答える 1

1

ドー!私はアクションをディスパッチしていませんでした。私はアクションクリエーターを呼んでいただけです。Redux に慣れる必要があります。

アクションを呼び出している と思った方法:AppActionCreators.createFlashMessage('some message');

Redux で実際にアクションを呼び出す方法: this.context.dispatch(AppActionCreators.createFlashMessage('some message'));

Wheredispatchは Redux ストアによって提供されるメソッドであり、React を介してアプリのすべての子コンポーネントに渡すことができますchildContextTypes

于 2015-11-25T05:54:43.033 に答える