【发布时间】:2018-10-25 11:42:12
【问题描述】:
我有以下型号:
const AnotherModel = types.model({
foo: types.string
});
export const SomeCollectionModel = types
.model({
data: types.array(AnotherModel),
})
.views((self) => ({
getData: () => self.data,
}))
.actions((self) => ({
fetchData: flow(function* fetchData() {
try {
const data =
yield service.fetchData();
self.data.replace(
data.map((f) => AnotherModel.create(f)),
// Using plain json instead of create does the same
);
} catch (err) {
console.error(err);
}
})
}));
然后我有两个 React 组件,我用 inject 和 observer 组成。
父级(查看/页面):
compose(
inject((states) => ({
fetchData: () =>
states.myModel.fetchData(),
})),
observer,
)
孩子一:
compose(
inject(states => ({
data: states.myModel.getData()
})),
observer
)
我有一个重新渲染的问题。最初子组件不渲染任何东西。同时获取数据(动作触发自身)。但是数据不会在孩子中更新。 componentWillReact 不会触发。
更改路由后(由路由器重新渲染)视图得到更新
你有什么想法吗?我被困了好几个小时。
【问题讨论】:
-
您使用的是什么版本?我从 mobx 切换到 mobx-state-tree 并且在他们的文档中描述了关于嵌套观察者的问题mobx-react.js.org/observer-component#nesting-caveat
标签: javascript mobx mobx-state-tree