观察者的最简实现: /** * @const observer - 观察者的最简实现,只发布一类事件 */ var observer = { subscriber: [], subscribe: function(callback){ if(!callback instanceof Function) throw '订阅回调必须是函数'; this.subscriber.push(callback); } publish: function(info){ // 该观察者只须负责一类事件,因此省略了类型参数 this.subscriber.forEach(function(item){ item(info); }); } }; 应用到 React : class SomeComponent extends React.Component{ constructor(options){ super(options); var that = this; // 从上面的观察者订阅事件,并将事件信息反映到 // 本组件的状态中去 observer.subscribe(function(info){ that.setData({ getThisInfo: info }); }); } } 对于纯函数组件,需要使用 React hook。
观察者的最简实现:
应用到
React
:对于纯函数组件,需要使用
React hook
。