redux 为什么要使用Action Creator回调函数而不是使用简单对象?

qvk1mo1f  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(147)

我目前正在学习Redux的codecademy和遇到的东西,感觉多余的。
本课程提供了以下有关呼叫派单的过多方式的示例:

store.dispatch({type:'toggle'});
store.dispatch({type:'toggle'});
store.dispatch({type:'toggle'});

在大多数Redux应用程序中,操作创建器被用来减少重复并提供一致性。操作创建器只是一个返回带有类型属性的操作对象的函数。它们通常被调用并直接传递给store.dispatch()方法,从而导致更少的错误和更容易阅读的调度语句。
可以使用名为toggle()的操作创建器重写上面的代码,如下所示:

const toggle = () => {
  return { type: "toggle" };
}
store.dispatch(toggle()); // Toggles the light to 'off'
store.dispatch(toggle()); // Toggles the light back to 'on'
store.dispatch(toggle()); // Toggles the light back to 'off'

我的问题是,为什么不简化这个返回对象的Action Creator回调函数,只创建一个这样的对象呢?

const toggle = { type: toggle }
store.dispatch(toggle);
store.dispatch(toggle);
store.dispatch(toggle);
fwzugrvs

fwzugrvs1#

const toggle = Object.freeze({ type: "toggle" })确实工作得很好,并且适合于这个特定的动作。然而,通常一个动作确实携带一个有效载荷,并且要创建具有不同有效载荷值的动作,将使用一个函数,例如

function openSection(index) {
    return {type: "open", index};
}

你会称之为

store.dispatch(openSection(1))
// or
e => store.dispatch(openSection(+e.target.dataset.index))

相关问题