Javascript Redux Reducer正在返回一个[Object Object],但我想要字符串?

Javascript Redux Reducer正在返回一个[Object Object],但我想要字符串?,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我正在尝试更改redux中常量的状态。 我正在尝试直接在要更改其状态的组件中进行分派。状态在分派后更改,但是我返回了一个对象。当我调用Console.log时,我得到[Object][Object],在调用dispatch之前,我用它来获取状态的值 这是我的商店 import { createStore,applyMiddleware , compose } from 'redux'; import thunk from 'redux-thunk'; import rootReducer fro

我正在尝试更改redux中常量的状态。 我正在尝试直接在要更改其状态的组件中进行分派。状态在分派后更改,但是我返回了一个对象。当我调用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;
这是我的主减速器

import { combineReducers } from 'redux';
import sidebarReducer from './sidebarReducer';


export default combineReducers({
    name : sidebarReducer

});
这是我的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;


}
这是我的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);
我成功地从存储中检索到状态,但是当我分派时,我返回了一个对象

sidebarReducer.js:13 reducer called
sidebarReducer.js:14 wrapper slide-menu
App.js:38 sidebarname is [object Object]
App.js:40 wrapper slide-menu

你的sidebarReducer只管理一个字符串。只需在TOGGLE_侧栏上返回action.payload,而不是带有
sidebarname
属性的对象。

在处理操作时,您返回的是一个对象(请检查大括号):

由于您的整个状态仅为字符串
sidebarname
,因此应仅返回有效负载:

return action.payload
或者,您可以将状态设置为对象,然后您的操作返回应该可以正常工作:

let initialState = { sidebarmenu: "wrapper slide-menu" };
...
export default function(state=initialState,action){
  ...
}

您能告诉我们控制台是如何记录它的吗?我控制台在调用分派函数后,将它记录在react组件的render()函数中。我得到了[对象][对象]。console.log是console.log(this.props.name)可以指定如何使用。因为我在reducer返回对象中写入
action.payload
时出错。这对@shinglesmingles很有帮助。谢谢现在我可以通过
this.props.name.sidebarname
调用它了。国家也在改变。但是,当我调用MapStateTops时,我只传递
name:this.props.name
。所以对象的名称是我在这里传递的
Name
。我在绘制地图时感到困惑。谢谢你,伙计。你救了我一天
let initialState = { sidebarmenu: "wrapper slide-menu" };
...
export default function(state=initialState,action){
  ...
}