2016-08-17 2 views
0

Я следую за Redux tutorial series. В том, что Дэн Абрамов показывает, как создать 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

Вы нажимаете числа на массив 'listeners', и вы пытаетесь вызвать это число как функцию. – Dieterg

+0

Не могли бы вы объяснить строку внутри функции отправки. – TA3

+1

Вы должны подписаться на 'магазин', используя функцию. Когда вы отправляете «действие», вызывается все функции прослушивателя. – Dieterg

ответ

0

listeners является массивом функций так listeners.forEach(listener => listener()); Перебирает функции слушателя и вызывает их listener().

Смежные вопросы