Mobx:是否有可能在可观察对象中的get属性上设置钩子?

时间:2019-07-25 21:40:24

标签: reactjs mobx

我有一个可观察的物体。并将其用于反应观察组件。当mobx在此对象中获取任何属性时,我可以进行一些回调吗? 示例:

@observable obj; // in some class that will be a store

@observer
class Test extends React.Component<Props, {}> {
  render() {
    <div>{this.props.obj.user.name}</div>
  }
}

当mobx从obj获取任何属性时,我想添加回调,例如:

obj.on('get', (target, value) => {
  console.log(target, value);
})

在这种情况下,我应该将其两次触发(用户名和用户名)

1 个答案:

答案 0 :(得分:0)

您可以interceptobserve由mobx管理的对象和属性。

拦截通常用于防止某些值。

观察用于观察更改的内容。

const disposer = observe(obj,(change) => {
    console.log(change.type, change.name, "from", change.oldValue, "to", change.object[change.name]);
  if('get' === change.name){
    // obj.get value is changed
  }
});

有关官方文档的更多信息:Intercept & Observe