如何在Redux动作中访问React上下文和/或挂钩

时间:2020-03-17 09:43:55

标签: reactjs redux react-redux react-hooks

有人可以告诉我在redux动作中访问上下文和/或挂钩是否是一个好主意,还是始终将它们作为组件的参数来传递是更好的选择。

目前,我设法做到这一点的唯一方法是创建一个自定义的派发钩子:

function useDispatchWithHooks () {
    const dispatch = useDispatch();
    const hooks = {...useContext(AlertContext), ...useContext(WindowContext), ...useTranslation(), etc... };

    return (action) => {
        if (typeof action === 'function') {
            return action({ ...hooks }, dispatch);
        }

        return dispatch(action);
    }
}

用法:

   const dispatch = useDispatchWithHooks();

    dispatch (({showAlert, translate}, dispatch) => {
        showAlert(translate('alert'), translate('createdTab'));
        dispatch( { type: INITIALIZE_TAB });
    });

0 个答案:

没有答案