24

React + Redux + Webpack + WebpackDevserverを使用してい ます。ホットローダーが起動されると、すべてのレデューサーが初期状態にリセットされます。

どういうわけかレデューサーを実際の状態に保つことはできますか?

私のWebpack構成には以下が含まれます:

entry: [
    "./index.jsx"
],
output: {
    filename: "./bundle.js"
},
module: {
    loaders: [
        {
            test: /\.js|\.jsx$/,
            exclude: /node_modules/,
            loaders: ["react-hot","babel-loader"],
         }
    ]
},
plugins: [
    new webpack.HotModuleReplacementPlugin()
]

私のレデューサーの統計:

const initialState = {
...
}

export default function config(state = initialState, action) { ...

次の方法で Webpack Dev-Server を起動します。

"start": "webpack-dev-server",
4

4 に答える 4

21

Babel 6 を想定すると、これに沿って何かを行う必要があります。

import {createStore} from 'redux';
import rootReducer from '../reducers';

export default function configureStore(initialState) {
  const store = createStore(rootReducer, initialState);

  if(module.hot) {
    // Enable Webpack hot module replacement for reducers
    module.hot.accept('../reducers', () => {
      const nextReducer = require('../reducers/index').default;

      store.replaceReducer(nextReducer);
    });
  }

  return store;
}

my redux demoで実際のアプローチを見ることができます。

于 2016-01-09T19:13:46.087 に答える