我创建使用mobx
商店如下:mobx:array.map()不是一个函数
import {extendObservable} from 'mobx';
class InfluencerFeedStore {
constructor() {
extendObservable(this, {
data: []
});
}
setData(items = []) {
this.data = items;
}
}
export default new InfluencerFeedStore();
然后我观察到店我阵营的观点:
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()
加载项,将作出反应正确试图重新呈现Feed
视图(因为它注意到观察到的更新mobx)...但我得到一个错误,抱怨InfluencerFeedStore.data.map is not a function
。
通过阅读mobx
文档,我收集到重新分配我的data
属性是有问题的,因为它是一个数组(而其他数据类型像字符串“只是工作”)。任何人都可以告诉我我在这里做错了什么?
完全是为了我自己的熏陶,你似乎是访问以静态方式将数据VAL,而不是从类的实例(数据在构造函数中初始化)。这可以吗? ObservableFeed将代表一个实例。 –
确实,构造函数从来没有被调用,所以这不起作用。应该首先实例化商店 – mweststrate