标题:钩子函数
题目描述:请实现一个钩子函数,钩子函数可以理解为事件被动地被监听着,一旦满足条件就执行,可以执行多次(被监听到多次)
import React, {component} from 'react' export default class Listener extends React.Component { constructor(props) { super(props); this.state={ count:1 } } componentDidMount() { window.addEventListener('click',this.handle) } componentWillUpdate() { window.removeEventListener('click', this.handle) } handle = () => { if(this.state.count >1) { this.setState({ count: count+1 }) } } render() { return ( <div> <button onClick={this.handle}>submit</button> </div> ) } }
class EventEmitter { constructor() { this._observerList = [] } subscribe(observerFunc) { if (!observerFunc instanceof Function) throw new Error('param must be a function') return this._observerList.push(observerFunc) } // end subscribe notify() { this._observerList.forEach(func => func()) } // end notify } // end EventEmitter const _eventEmitterInstance = new EventEmitter() _eventEmitterInstance.subscribe(()=>console.log('one')) _eventEmitterInstance.subscribe(()=>console.log('two')) _eventEmitterInstance.subscribe(()=>console.log('three')) _eventEmitterInstance.notify()