我有以下模型:
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
不触发。更改路由后(由路由器重新渲染)视图得到更新
你有什么主意吗?我被困了几个小时。