Как изменить родительское состояние с дочернего - Mobx State Tree? - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь сделать Nav в реакции с Mobx State Tree.

Прямо сейчас у меня есть тощая вертикальная панель навигации со списком значков.Теперь я хочу добавить элементы подменю к определенным.При нажатии на эти кнопки навигация переходит от тонкой к широкой (то есть расширяется), и отображаются элементы подменю.Как только пользователь нажимает на одну из них, 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

1 Ответ

0 голосов
/ 06 июня 2018

Вам необходимо импортировать функции getParent и (необязательно) hasParent:

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

Затем в вашем действии вызовите родительское действие:

if (hasParent(self)) {
  getParent(self).someAction(someParams);
}
...