Reactjs React Redux REDUCTOR方法在执行时出错
我正在开发第一个React Redux应用程序。我有以下容器: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) =&
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'})
完成了。谢谢