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

是否可以观察特定地图条目的 mobx-state-tree 事件

如何解决是否可以观察特定地图条目的 mobx-state-tree 事件

是否可以这样做:

observe(props.store.zone.players[props.socket_id],(change) => {

  ...

})

我想监听组件的每个特定实例上的事件。

这里是 Zone 商店:

const Zonestate = types
  .model({
    name: types.optional(types.string,""),players: types.map(PlayerState),})
  .actions((self) => ({
    syncPlayer(params) {
      const player = self.players.get(params.id);
      const oldplayerData = toJS(player);
      self.players.put(params);
    },}));

和播放器商店

import { types } from "mobx-state-tree";

const PlayerState = types
  .model({
    id: types.identifier,socket_id: types.optional(types.string,x: types.integer,z: types.integer,name: types.optional(types.string,"UnkNown One"),})
  .actions((self) => ({
    sync(params) {
      self.x = params.x;
      self.z = params.z;
    },}));

export default PlayerState;

解决方法

你可以例如使用 observeautorun 在特定地图条目更改时运行一些代码。

示例

// ...

const zoneState = ZoneState.create();

zoneState.syncPlayer({ id: "1",socket_id: "1",x: 1,z: 2,name: "test" });

observe(zoneState.players.get("1"),(change) => {
  console.log("observe",change);
});

autorun(() => {
  console.log("autorun",zoneState.players.get("1"));
});

zoneState.syncPlayer({ id: "1",name: "test 2" });

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