在react组件中监听state
的改变,就好像vue中的watcher
api一样
依赖 React 和 Lodash.isequal.
npm install react-easy-watcher --save
- 将一个组件用高阶组件
watcher
封装一层然后返回 - 要监听
state
变化很简单,在组件的state
中定义watch
对象(必须),其他的操作就和vue
中的watch 一样容易了,该对象的键为组件中想监听的state
字段,值为一个函数,当要监听的字段发生变化时(支持深度监听),触发这个函数。函数的参数为监听字段的改变前后的值。
import React, { Component } from 'react';
import watcher from 'react-easy-watcher';
class Hello extends Component {
constructor(props) {
super(props)
this.state = {
msg: 'react-easy-watcher',
watch: {
msg(newVal,oldVal) {
console.log(newVal,oldVal,this)
}
}
}
}
change() {
this.setState({
msg: 'hello world!'
})
}
render() {
const { msg } = this.state
return (
<div>
<h1>{ msg }</h1>
<button onClick={this.change.bind(this)}>change</button>
</div>
)
}
}
export default watcher(Hello);
zysallen
MIT