cod*_*emt 2 javascript reactjs redux react-redux
我正在尝试更改 redux 中 const 的状态。我正在尝试直接在要更改状态的组件中进行分派。分派后状态已更改,但是我返回一个对象。当我 Console.log 时,我得到 [Object][Object] ,在调用 dispatch 之前我用来获取状态的值。
这是我的商店。
import { createStore,applyMiddleware , compose } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
//const initialState = {};
const middleware = [thunk];
const store = createStore(
rootReducer,
compose(
applyMiddleware(...middleware),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
)
);
export default store;
Run Code Online (Sandbox Code Playgroud)
这是我的主减速器。
import { combineReducers } from 'redux';
import sidebarReducer from './sidebarReducer';
export default combineReducers({
name : sidebarReducer
});
Run Code Online (Sandbox Code Playgroud)
这是我的 CustomReducer ,我称之为 sidebarReducer。
import { TOGGLE_SIDEBAR } from '../actions/types';
let sidebarname = "wrapper slide-menu";
export default function(state=sidebarname,action){
switch(action.type){
case TOGGLE_SIDEBAR:
console.log('reducer called');
console.log(state);
return{
...state,
sidebarname : action.payload
};
}
return state;
}
Run Code Online (Sandbox Code Playgroud)
这是我的 Dispatch 和 MapStatetoProps 函数。
const mapStatetoProps = state => ({
name : state.name
});
const mapDispatchtoProps = dispatch => ({
setName : (name) => {
dispatch({
type: "TOGGLE_SIDEBAR",
payload: name
})
}
})
export default connect(mapStatetoProps,mapDispatchtoProps)(App);
Run Code Online (Sandbox Code Playgroud)
我成功地从商店中检索了状态,但是当我调度时,我得到了一个对象。
sidebarReducer.js:13 reducer called
sidebarReducer.js:14 wrapper slide-menu
App.js:38 sidebarname is [object Object]
App.js:40 wrapper slide-menu
Run Code Online (Sandbox Code Playgroud)
在处理您的操作时,您将返回一个对象(检查花括号):
return {
...state,
sidebarname: action.payload
};
Run Code Online (Sandbox Code Playgroud)
由于您的整个状态只是 string sidebarname,您应该只返回有效负载:
return action.payload
Run Code Online (Sandbox Code Playgroud)
或者,您可以让您的状态成为一个对象,然后您的操作返回应该可以正常工作:
let initialState = { sidebarmenu: "wrapper slide-menu" };
...
export default function(state=initialState,action){
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4094 次 |
| 最近记录: |