Reactjs React Redux REDUCTOR方法在执行时出错

Reactjs React Redux REDUCTOR方法在执行时出错,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我正在开发第一个React Redux应用程序。我有以下容器: import { connect } from 'react-redux' import Visualization from '../components/visualization' // http://redux.js.org/docs/basics/UsageWithReact.html#implementing-container-components const mapStateToProps = (state) =&

我正在开发第一个React Redux应用程序。我有以下容器:

import { connect } from 'react-redux'
import Visualization from '../components/visualization'

// http://redux.js.org/docs/basics/UsageWithReact.html#implementing-container-components
const mapStateToProps = (state) => state;  // identity transform, for now...

function mapDispatchToProps(dispatch) {
    return {
        stepForward: () => dispatch('STEP_FORWARD')
    };
}

const VisualizationContainer = connect(
    mapStateToProps,
    mapDispatchToProps
)(Visualization);

export default VisualizationContainer;
以及以下后续组件:

import React from 'react'

export default class Visualization extends React.Component {
    render() {
        console.log(this.props.stepForward());
        return <div>"HELLO WORLD"</div>;
    }
}

标有
XXX
的问题是
stepfroward
存在,但在执行时会爆炸。这里的错误是什么?

正如错误所说。动作应该是对象,而不是其他类型。您试图将字符串作为操作分派,这是无效的。相反,您应该使用属性设置为动作类型字符串的
类型的对象

mapDispatchToProps
功能更改为:

function mapDispatchToProps(dispatch) {
    return {
        stepForward: () => dispatch({
          type: 'STEP_FORWARD' 
        })
    };
}
它应该会起作用


实际上,您应该更进一步,让您的所有操作都遵循标准化模板。很多开发人员都遵循的一个好方法是。

正如错误所说。动作应该是对象,而不是其他类型。您试图将字符串作为操作分派,这是无效的。相反,您应该使用属性设置为动作类型字符串的
类型的对象

mapDispatchToProps
功能更改为:

function mapDispatchToProps(dispatch) {
    return {
        stepForward: () => dispatch({
          type: 'STEP_FORWARD' 
        })
    };
}
它应该会起作用


实际上,您应该更进一步,让您的所有操作都遵循标准化模板。很多React开发人员遵循的一个很好的方法是。

应该是
dispatch({type:'STEP\u FORWARD')
。谢谢。应该是
dispatch({type:'STEP\u FORWARD'})
完成了。谢谢