微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mobx:更改数据时的类方法调用

如何解决mobx:更改数据时的类方法调用

Сan我使用Mobx库在数据更改时调用方法吗?

例如MyObject写入container['item'] = 10,结果调用myaction方法

class MyElement extends Component<any> {

    // modifiable data
    container: any = [];

    // method called when data (container) is modified
    myaction() {
        console.log('container was modified');
        console.log(this.container);
    }

    render() {
        <MyObject container = {this.container} />
    }
}

decorate(MyElement,{
    container: observable
} as any)

解决方法

您可以使用reaction例如:

  container = [];

  componentDidMount() {
    // save disposer function to use later inside componentWillUnmount
    this.reactionDisposer = reaction(
      () => this.container.length,() => {
        console.log('container was modified')
      }
    );
  }

  // Don't forget to dispose it when unmount
  componentWillUnmount() {
    this.reactionDisposer();
  }

Codesandbox链接:https://codesandbox.io/s/httpsstackoverflowcomquestions63864175-kjorh?file=/src/App.js

而且,从技术上讲,您可以使用数组container['item'] = 10来做到这一点,但我建议您不要对数组使用字符串键。如果要使用字符串键,则需要使用object或Map

您还可以使用其他方法来实现所需的目标:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。