Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将操作连接到函数_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 将操作连接到函数

Javascript 将操作连接到函数,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,最近我一直在使用react类,使用mapStateToProps和react redux connect,因此我能够在类中使用操作,但是现在我尝试编写不属于以下类的函数 import { some_imported_action } from '../actions/my_actions'; export function f() { some_imported_action(); } 但是,我在尝试让函数运行导入的操作时遇到了问题,我假设问题是尝试将react redux connec

最近我一直在使用react类,使用mapStateToProps和react redux connect,因此我能够在类中使用操作,但是现在我尝试编写不属于以下类的函数

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

export function f() {
  some_imported_action();
}
但是,我在尝试让函数运行导入的操作时遇到了问题,我假设问题是尝试将react redux connect与函数而不是类一起使用。当我运行上面的代码时,不会发生任何错误,但操作不会执行

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

some_imported_action: PropTypes.func.isRequired
我试图运行它时遇到的错误与“this”有关,或者“props”在行中未定义

this.props.some_imported_action();
我想如果没有一门课,这可能是不可能的,有什么想法吗? 感谢当调用
f()
函数时,Redux不会发生任何事情,因为操作创建者(
某些导入的操作
)未连接到您的应用商店

Redux操作需要使用
store.dispatch
函数进行调度,以便由还原程序处理。 接收函数作为第二个参数a
mapDispatchToProps
对象或函数:

[mapDispatchToProps(分派,[ownProps]):分派Props]
(对象或函数):

如果传递了一个对象,则假定其中的每个函数都是 Redux操作创建者。具有相同函数名但具有 每个action creator都打包到一个分派调用中,以便 直接调用,将合并到组件的道具中

如果传递了一个函数,它将作为第一个参数被分派。这取决于您返回一个对象,该对象以某种方式使用dispatch以您自己的方式绑定动作创建者

传递名为
someAction
的回调道具的示例,该道具与store
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};
const someAction=()=>({type:'SOME_ACTION'});
函数MyComponent({someAction}){
返回。。。;
}
导出默认连接(null,{someAction})(MyComponent);

阅读与React Redux相关的更多信息

是否有一种方法可以将组件纯粹作为函数写入和调用,而不返回任何要渲染的内容。例如,如果您有另一个函数要调用
MyComponent
,请向其传递一个值,然后使用该值运行
someAction
操作。如果我理解您的问题,您要求直接使用功能组件而不是jsx元素。是的,只需在另一个已安装组件的呈现中调用您的函数。如果我没听懂,请再问一个问题。干杯