Альтернативный магазин избыточного магазина с индивидуальным магазином в реакции
Я изучаю этот код компонента реакции:
export default function createStore(initialState) {
let state = initialState;
const listeners = [];
function dispatch() {
listeners.forEach(listener => listener());
}
return {
getState() {
return state;
},
setState(nextState) {
state = nextState;
dispatch();
},
subscribe(listener) {
listeners.push(listener);
return function unsubcribe() {
listeners.splice(listeners.indexOf(listener), 1);
};
},
};
}
Я был удивлен, этот код не использовать, но собственный магазин? кто-то может мне объяснить об этом коде? это способ использовать глобальное хранилище и не использовать избыточное хранилище?
это строки:
listeners.forEach(listener => listener());
return function unsubcribe() {
listeners.splice(listeners.indexOf(listener), 1);
};
что означает?
1 ответ
Решение
Это упрощенная реализация Redux-подобного магазина. Он не включает другие объекты Redux, такие как промежуточное программное обеспечение или редукторы.
setState
делает то, что от него ожидают, subscribe
,
listeners.forEach(listener => listener())
уведомляет слушателей, что состояние было обновлено.
return function unsubcribe() {...}
возвращает функцию для отмены подписки слушателя на обновления состояния.