2016-08-17 63 views
0

我正在关注Redux tutorial series。其中Dan Abramov展示了如何从头开始创建Redux商店。下面是一段代码从零开始实施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}; 
} 

调度函数中下面一行是我感到困惑,

listeners.forEach(listener => listener()); 

我知道,它通过监听器阵列&中的所有元素迭代通过每个元素到箭头功能。

那么怎么办监听器()

+1

您正在将数字推入“侦听器”数组,并尝试将该数字作为函数调用。 – Dieterg

+0

你能解释一下调度函数中的一行吗? – TA3

+1

你应该使用一个函数来订阅'store'。一旦你调度了一个'action',所有的监听器函数都被调用。 – Dieterg

回答

0

listeners是通过监听功能的功能,从而listeners.forEach(listener => listener());遍历数组,并与listener()调用它们。