有人可以告诉我在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 });
});