将操作连接到函数

时间:2018-03-24 23:50:31

标签: javascript reactjs redux react-redux

最近我一直在使用react类并使用mapStateToProps和react-redux连接,我已经能够在我的类中使用动作了,但是现在我正在尝试编写不属于的函数到类似以下的类

import { some_imported_action } from '../actions/my_actions';

export function f() {
  some_imported_action();
}

但是我在尝试使用函数来运行导入的操作时遇到了麻烦,我认为问题是尝试使用react-redux连接函数而不是类。当我运行上面的代码没有任何反应时,没有错误,但操作不会执行。

我尝试导入道具类型并使用

创建所需的功能
some_imported_action: PropTypes.func.isRequired

我尝试运行它时遇到的错误与“this”有关,或者行中未定义“props”。

this.props.some_imported_action();

我认为没有课程,任何想法都可能无法实现? 感谢

1 个答案:

答案 0 :(得分:1)

当调用f()函数时,Redux没有任何操作,因为操作创建者(some_imported_action)未连接到您的商店。

需要使用store.dispatch函数调度Redux操作,以便由 reducers 处理。 来自connectreact-redux函数作为第二个参数接收mapDispatchToProps对象或函数:

  

[mapDispatchToProps(dispatch, [ownProps]): dispatchProps](对象或函数):

     

如果传递了一个对象,则其中的每个函数都被假定为a   Redux动作创作者。具有相同功能名称但具有的对象   每个动作创建者都包含在一个调度呼叫中,因此它们可能是   直接调用,将​​合并到组件的道具中。

     

如果传递了一个函数,它将被赋予dispatch作为第一个参数。由您来回复一个以某种方式使用dispatch以您自己的方式绑定动作创建者的对象。

传递与商店someAction绑定的名为dispatch的回调道具的示例:

import { connect } from 'react-redux';
const someAction = () => ({ type: 'SOME_ACTION' });

function MyComponent({ someAction }) {
    return <div onClick={someAction}>...</div>;
}

export default connect(null, { someAction })(MyComponent);

阅读更多与React-Redux connect

相关的信息