我正在try 做一个新闻应用程序,可以从新闻API的react ,并存储在新闻馈送,然后用户可以标记一些新闻作为Collection ,然后存储这些Collection 到新的模式Collection
这就是我得到的错误
错误:[mobx-state-tree]如果某个对象已经是同一或另一个状态树的一部分,则无法将该对象添加到状态树.try 将对象分配给‘/News Store/Favorite/0’,但它已经位于‘/News Store/News Feed/0’,js引擎:hermes 这是我的新闻模型
export const NewsModel = types
.model('News')
.props({
newsFeed: types.array(News),
favorite: types.array(News),
totalResults: types.maybeNull(types.number),
newsUserTask: types.optional(AsyncTask, {}),
})
这就是我调用API并将其存储在新闻提要中的方式
.actions(self => {
const newsCall = (page: number, feed: boolean) =>
runTask(self.newsUserTask, function* ({ exec }) {
const result = yield* toGenerator(
self.environment.baseApi.newsFeed(page),
);
exec(() => {
if ((result as NewsTypeResponse).status === 'ok') {
if (self.newsFeed.length) {
if (page < Math.ceil(self.totalResults / 10)) {
self.newsFeed = castToSnapshot([
...self.newsFeed,
...(result as NewsTypeResponse).articles,
]);
} else {
self.rootStore.errorStore.setError(
translate('errors.endOfPage'),
);
}
self.newsFeed = castToSnapshot([
...self.newsFeed,
...(result as NewsTypeResponse).articles,
]);
} else {
if (feed) {
self.totalResults = castToSnapshot(
(result as NewsTypeResponse).totalResults,
);
self.newsFeed = castToSnapshot(
(result as NewsTypeResponse).articles,
);
} else {
self.newsData = castToSnapshot(
(result as NewsTypeResponse).articles,
);
}
console.log('load more working');
}
console.log('working');
} else {
console.log('not working');
}
});
});
return { newsCall };
})
这就是我试图在Favorite存储的方式
.actions(self => ({
setFav(item: NewsTypes) {
self.favorite.push(item);
},
}))
我怎么做才能做到这一点呢?我try 了一些像这样的解决方案