4

我正在尝试使用 Mobx 状态树在 reactjs 中创建导航。

现在我有一个带有图标列表的瘦垂直导航栏。现在我想做的是向某些菜单项添加子菜单项。当这些被点击时,导航从瘦到宽(即展开)并显示子菜单项。一旦用户点击其中一个,Nav 就会回到瘦版本。

我认为我需要的是一种方法,当在我的父商店中点击一个图标时,一个标志会设置为“展开”,但我不知道如何在点击孩子时设置它。

import { types } from "mobx-state-tree";
import NavItem from "./NavItem.js";
const NavStore = types
  .model("NavStore", {
    expanded: false,
    nav_items: types.array(NavItem)
  })
  .actions(self => ({}))
  .views(self => ({}))
  .create({

  });

export default NavStore;


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

const NavItem = types
  .model("NavItem", {
     expands: false,
     title: types.string
  })
  .actions(self => ({
    itemClicked() {

    }
  }))
  .views(self => ({}));

export default NavItem
4

1 回答 1

7

您需要导入 getParent 和(可选)hasParent 函数:

import { types, getParent, hasParent } from ‘mobx-state-tree’

然后在你的行动中调用父母的行动:

if (hasParent(self)) {
  getParent(self).someAction(someParams);
}
于 2018-06-06T17:23:56.267 回答