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
は配列であるため問題があることがわかりました(文字列などの他のデータ型は「うまく機能する」)。ここで私が間違っていることを誰かに教えてもらえますか?