ich ein Geschäft erstellt haben mobx
wie folgt:mobx: array.map() ist keine Funktion
import {extendObservable} from 'mobx';
class InfluencerFeedStore {
constructor() {
extendObservable(this, {
data: []
});
}
setData(items = []) {
this.data = items;
}
}
export default new InfluencerFeedStore();
Und ich beobachte dann diesen Speicher in meinem React Ansicht:
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);
On Erstes Rendern, meine Feed
Ansicht funktioniert einwandfrei (obwohl es keine Elemente im Array gibt).
Wenn ich später Teile der Ladung durch InfluencerFeedStore.setData()
Aufruf korrekt versuchen reagieren wird wieder machen die Feed
Ansicht (weil es die mobx beobachtbaren aktualisiert bemerkt) ... aber ich habe einen Fehler, dass InfluencerFeedStore.data.map is not a function
beschweren.
Aus der Lektüre durch den mobx
docs, entnehme ich, dass die Neuzuweisung meine data
Eigenschaft problematisch ist, weil es ein Array (während andere Datentypen wie Strings „einfach funktionieren“) ist. Kann mir jemand sagen, was ich hier falsch mache?
Völlig für meine eigenen Erbauung, Sie scheinen, dass die Daten val in einer statischen Weise zugreifen, nicht von einer Instanz der Klasse (Daten werden im Konstruktor initialisiert). Ist das in Ordnung? ObservableFeed würde eine Instanz darstellen. –
In der Tat, Konstruktor wird nie aufgerufen, also wird dies nicht funktionieren. Store sollte zuerst instanziiert werden – mweststrate