标题:钩子函数
题目描述:请实现一个钩子函数,钩子函数可以理解为事件被动地被监听着,一旦满足条件就执行,可以执行多次(被监听到多次)
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()