我的目标是调度一个动作,以便我可以传递状态对象。
import { addUser } from './actions' //action creator
this.state = {
person: {
name: '',
age: 0,
},
isLoading: true,
}
//本地功能。
addNewUser = () => {
//dispatches conditionally so the local func..
this.props.addUser(this.state.person);
}
//调度
mapDispatchToProps = dispatch => ({
addUser: (person) => dispatch(addUser(person)),
})
错误显然在我的mapDispatch上(以错误的方式评估状态)。我该如何解决?(或者有什么更好的方法,但是必须使用动作创建者)
提前欣赏。
答案 0 :(得分:0)
假设您的操作正确无误。
const mapDispatchToProps = (dispatch) => {
return {
addUser: (person) => {
dispatch(addUser(person))
},
}
}
我相信您只在mapDispatchToProps上缺少返回{}
答案 1 :(得分:0)
我发现将您的操作连接到导出并调用this.props.addUser
更简单,因为默认情况下,它无需执行mapDispatchToProps
就可以为它分配调度
export default connect(
mapStateToProps,
{action1, action2, addUser})(User)
那么您仍然可以使用:
addNewUser = () => {
this.props.addUser(this.state.person);
}
,然后在操作或减速器本身(取决于您对流量的偏好)内进行其余操作,例如:
export const addUser = user => ({
type: ADD_USER_SUCCESS,
payload: {user}
})
这确实更有用,因为在组件外执行逻辑更具可伸缩性和可管理性。如果您有10个动作,它很快就会失控,并且开始混合使用不同类型的逻辑。