How*_*ods 7 javascript ecmascript-6 redux
我正在观看Dan Abramov关于Egghead的Redux教程,他做了一些让我感到困惑的事情.作为一种学习练习,他让观众重建createStore抽象.一种方法createStore提供了subscribe,它增加了监听器来监听商店的变化.
然后他说:
这里有一个重要的缺失部分.我们还没有提供取消订阅听众的方法.我们将从Subscribe方法返回一个函数,而不是添加专用的Unsubscribe方法,该函数从侦听器的数组中删除此侦听器.
所以他用来添加/删除监听器的代码是:
const subscribe = (listener) => {
listeners.push(listener);
return () => {
listeners = listeners.filter(l => l !== listener);
};
};
Run Code Online (Sandbox Code Playgroud)
我有点明白,这允许你使用一个函数进行添加/删除,这是可能的,因为如果你传递subscribe方法已经订阅的监听器的名称,过滤器将删除它,我不明白为什么这会返回一个箭头函数而不是一个监听器数组.如何/何时调用此返回函数?
如何/何时调用此返回函数?
应该删除侦听器时调用此函数.究竟应该发生这种情况取决于应用程序.
调用很简单:
const remove = subscribe(myListener);
// later:
remove();
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这会返回一个箭头函数而不是一个监听器数组.
这将允许任何订户弄乱监听器阵列,或者要求每个订户实现相同的取消订阅逻辑.
| 归档时间: |
|
| 查看次数: |
1468 次 |
| 最近记录: |