Reactjs 直接而不是通过MapStateTops调用动作创建者可以吗?

Reactjs 直接而不是通过MapStateTops调用动作创建者可以吗?,reactjs,react-native,Reactjs,React Native,我觉得这个问题的答案应该是肯定的,但我只是想确定一下 我有这些action creator导入: import { updateField, goBackOneStep, finishStep } from './signup_actions' 然后,在这个视图的底部,我以前有这样一个: export default connect(mapStateToProps, { updateField, goBackOneStep, finishStep

我觉得这个问题的答案应该是肯定的,但我只是想确定一下

我有这些action creator导入:

import {
    updateField,
    goBackOneStep,
    finishStep
} from './signup_actions'
然后,在这个视图的底部,我以前有这样一个:

export default connect(mapStateToProps, {
    updateField,
    goBackOneStep,
    finishStep
})(InputTel)
我正在调用
this.props.finishStep(INPUT_TEL,{TEL},null)

但是,随后我修改了视图以使用Formik,它似乎更喜欢从其HOC处理提交操作,因此现在我有了以下内容:

export default connect(mapStateToProps, {
    updateField,
    goBackOneStep
})(withFormik({
    validate,
    validateOnBlur: true,
    validateOnchange: true,
    handleSubmit: ({ tel }) => finishStep(INPUT_TEL, { tel }, null)
})(InputTel))
我只是直接从导入中调用action creator。在React和React Native中都可以吗?(没有反模式或状态混淆?)。我找不到任何文档可以确认,但我非常确定我记得在Stephen Grider React课程中,无论怎样称呼它都没有区别

[编辑]:这是最终的解决方案。由于其特定于Formik的上下文,我会将其包括在内:

export default connect(mapStateToProps, {
    updateField,
    goBackOneStep,
    finishStep
})(withFormik({
    validate,
    validateOnBlur: true,
    validateOnChange: true,
    handleSubmit: ({ tel }, { props }) => props.finishStep(INPUT_TEL, { tel }, null)
})(InputTel))

飞行是正确的,因为Redux没有触发状态更改,因为没有正确调用动作创建者。

您可以直接调用动作创建者,但在这种情况下,它将作为简单函数调用,而不是作为Redux动作创建者调用。从文档中可以看到,它的
mapDispatchToProps
参数接受函数,该函数允许用Redux的
dispatch()
包装动作创建者,使它们成为实际的动作创建者

因此,为了能够将动作创建者函数用作Redux的动作创建者,您需要通过调用
dispatch(updateField())
而不是
updateField()
将它们包装到Redux的
dispatch()
,或者从Redux使用