Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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 在Redux connect回调中访问状态和调度_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 在Redux connect回调中访问状态和调度

Javascript 在Redux connect回调中访问状态和调度,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我有一个将状态和分派绑定到函数的函数。例如: function bindStateToGetFoo = (state, dispatch) => (arg1, arg2) => { const { val1, val1 } = state; dispatch(createAction()); ... }; 我这样做是因为我不想在MapStateTrops和mapDispatchToProps中重复代码。该功能用于多个组件中。这样做更干净: connect( stat

我有一个将状态和分派绑定到函数的函数。例如:

function bindStateToGetFoo = (state, dispatch) => (arg1, arg2) => {
  const { val1, val1 } = state;
  dispatch(createAction());
  ...
};
我这样做是因为我不想在
MapStateTrops
mapDispatchToProps
中重复代码。该功能用于多个组件中。这样做更干净:

connect(
  state => ({
    someFunction: bindStateToSomeFunction(state),
  }),
  dispatch => ({
    anotherFunction: bindDispatchToAnotherFunction(dispatch),
  }),
);

然而,当一个函数同时需要状态和分派时,我不知道如何处理它。在Redux
connect
callback中是否有一种方法可以访问状态和分派?

您可以这样做吗

function createDispatcherAndSelectorFunctions(...args) {
    return {
         dispatcher: (id, name) => ({
            type: "MY ACTION"
            payload: {
                id, name
            }
         }),              
         selector: (state) => state.foo
    } 
}


const {dispatcher, selector} = createDispatcherAndSelectorFunctions("hello world"); 

connect(
    state => ({
        data: selector(state), 
    }), 
    dispatch => ({
        fn: (id, name) => dispatch(dispatcher(id, name))
    })
);

你能这样做吗

function createDispatcherAndSelectorFunctions(...args) {
    return {
         dispatcher: (id, name) => ({
            type: "MY ACTION"
            payload: {
                id, name
            }
         }),              
         selector: (state) => state.foo
    } 
}


const {dispatcher, selector} = createDispatcherAndSelectorFunctions("hello world"); 

connect(
    state => ({
        data: selector(state), 
    }), 
    dispatch => ({
        fn: (id, name) => dispatch(dispatcher(id, name))
    })
);

您应该将
redux-thunk
作为中间件添加到redux中。这将使您能够像wantAlso一样访问状态和分派。因此,以连接方式绑定状态和分派是一种更详细的方式。连接组件时,
dispatch
将作为组件上的道具显示。您可以从组件本身进行调度:)
redux-thunk
是个好主意。我已经为async安装了它,但没有意识到这是另一个用例Yep!听起来很容易解决!如果您想分享您的项目,我很乐意帮助您展示如何使用redux thunk和其他工具清理/减少冗长的代码:)您应该将
redux thunk
作为中间件添加到redux中。这将使您能够像wantAlso一样访问状态和分派。因此,以连接方式绑定状态和分派是一种更详细的方式。连接组件时,
dispatch
将作为组件上的道具显示。您可以从组件本身进行调度:)
redux-thunk
是个好主意。我已经为async安装了它,但没有意识到这是另一个用例Yep!听起来很容易解决!如果您想分享您的项目,我很乐意帮助您展示如何使用redux thunk等工具清理/减少冗长的代码:)