最近我一直在使用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();
我认为没有课程,任何想法都可能无法实现? 感谢
答案 0 :(得分:1)
当调用f()
函数时,Redux没有任何操作,因为操作创建者(some_imported_action
)未连接到您的商店。
需要使用store.dispatch
函数调度Redux操作,以便由 reducers 处理。
来自connect的react-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
相关的信息