Я создал магазин, используя 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
проблематично, потому что это массив (тогда как другие типы данных, такие как строки, «просто работают»). Может ли кто-нибудь сказать мне, что я здесь делаю не так?