使用多个 applyMiddleware 反应 Redux
React Redux with multi applyMiddleware
我想使用以下答案
import {createStore, compose, applyMiddleware} from 'redux';
const localStorageMiddleware = ({getState}) => {
return (next) => (action) => {
const result = next(action);
localStorage.setItem('applicationState', JSON.stringify(
getState()
));
return result;
};
};
const store = compose(
applyMiddleware(
localStorageMiddleware
)
)(createStore)(
reducer,
JSON.parse(localStorage.getItem('applicationState'))
)
但是我没看懂这里的javascript语法
他怎么用compose(argument)(createStore)(argument)
?
有没有像createStore(reducer,initialState,compose(argument))
这样的替代方案?
此外,初始状态将如何传递到这里
const createStoreWithMiddleware = compose(
applyMiddleware(thunkMiddleware)
)(createStore);
export default function configureStore(initialState) {
const store = createStoreWithMiddleware(rootReducer);
return store;
}
是的! enhancer()(createStore)
语法是使用 createStore
的旧式方式,我们正试图鼓励人们改用新语法:
const composedEnhancers = compose(
firstEnhancer,
secondEnhancer
);
const store = createStore(
rootReducer,
preloadedState,
composedEnhancers
);
我想使用以下答案
import {createStore, compose, applyMiddleware} from 'redux';
const localStorageMiddleware = ({getState}) => {
return (next) => (action) => {
const result = next(action);
localStorage.setItem('applicationState', JSON.stringify(
getState()
));
return result;
};
};
const store = compose(
applyMiddleware(
localStorageMiddleware
)
)(createStore)(
reducer,
JSON.parse(localStorage.getItem('applicationState'))
)
但是我没看懂这里的javascript语法
他怎么用compose(argument)(createStore)(argument)
?
有没有像createStore(reducer,initialState,compose(argument))
这样的替代方案?
此外,初始状态将如何传递到这里
const createStoreWithMiddleware = compose(
applyMiddleware(thunkMiddleware)
)(createStore);
export default function configureStore(initialState) {
const store = createStoreWithMiddleware(rootReducer);
return store;
}
是的! enhancer()(createStore)
语法是使用 createStore
的旧式方式,我们正试图鼓励人们改用新语法:
const composedEnhancers = compose(
firstEnhancer,
secondEnhancer
);
const store = createStore(
rootReducer,
preloadedState,
composedEnhancers
);