我创建了一个商店,使用mobx
如下:
import {extendObservable} from 'mobx';
class InfluencerFeedStore {
constructor() {
extendObservable(this, {
data: []
});
}
setData(items = []) {
this.data = items;
}
}
export default new InfluencerFeedStore();
然后我在我的 React 视图中观察该商店:
import React from 'react';
import {observer} from 'mobx-react';
import FeedItem from './FeedItem';
import InfluencerFeedStore from '../../core/stores/InfluencerFeed';
import './style.css';
const generateItems = () => {
return InfluencerFeedStore.data.map((item, i) => (
<FeedItem key={`feeditem-${i}`} {...item} />
));
};
const Feed = () => (
<div className="Feed vertical-scroll-flex-child">
{generateItems()}
</div>
);
export default observer(Feed);
在第一次渲染时,我的视图工作得很好(尽管数组Feed
中没有项目)。InfluencerFeedStore.data
如果我稍后通过调用加载项目InfluencerFeedStore.setData()
,React 将正确尝试重新渲染Feed
视图(因为它注意到 mobx 可观察对象已更新)......但我收到一个错误,抱怨InfluencerFeedStore.data.map is not a function
.
通过阅读mobx
文档,我发现重新分配我的data
属性是有问题的,因为它是一个数组(而其他数据类型,如字符串“正常工作”)。谁能告诉我我在这里做错了什么?