【发布时间】:2016-08-17 07:25:16
【问题描述】:
我正在关注 Redux tutorial series。在那篇文章中,Dan Abramov 展示了如何从头开始创建 Redux 存储。这是这段代码
const createStore = (reducer) => {
let state;
let listeners = [];
const getState = () => state;
const dispatch = (action) => {
state = reducer(state, action);
listeners.forEach(listener => listener());
};
const subscribe = (listener) => {
listeners.push(listener);
return () => {
listeners = listeners.filter(l => l !== listener());
};
};
dispatch({});
return {getState, dispatch, subscribe};
}
dispatch 函数中的以下行是我感到困惑的地方,
listeners.forEach(listener => listener());
我知道它会遍历侦听器数组中的所有元素并将每个元素传递给箭头函数。
但这有什么作用listener()
【问题讨论】:
-
您将数字推送到
listeners数组,并尝试将该数字作为函数调用。 -
你能解释一下 dispatch 函数里面的那行吗?
-
您应该使用函数订阅
store。一旦你发送了一个action,所有的监听函数都会被调用。 -
好的,@Dieterg
标签: javascript ecmascript-6 redux react-redux