Jak nastavit data flatlist s Mobx? [duplicitní]

0

Otázka

Jsem nový mobx. Snažím se přenos dat do FlatList z oblíbených uložit do favoritescreen straně s mobx, ale flatlist se objeví prázdná, proč?

Důvod, proč jsem použít listData() v bookmarkList je, že pokud nechci používat šipky funkce v bookmarkList, mi to dává následující chyba;

[Unhandled promise rejection: TypeError: undefined is not an object (evaluating '_this2.userId')]

oblíbené(uložit);

import { observable, computed, action, makeObservable, configure } from "mobx";
import { bookmarkApi, petApi } from '../../constants/apiURL';
import AsyncStorage from '@react-native-async-storage/async-storage';

configure({
    enforceActions: "never",
})

class Favorites {
    userId = 0;
    petList = [];

    constructor() {
        this.bookMarkList()

        makeObservable(this, {
            userId: observable,
            petList: observable,
            bookMarkList: action,
        })
    }

    bookMarkList = async () => {
        const value = await AsyncStorage.getItem('userId')
        if (value != null) {

            this.userId = value;

            listData = () => {
                bookmarkApi.get('/').then(function (responseJson) {
                    if (responseJson) {
                        this.petList = responseJson.data.filter(data => data.userId == this.userId)
                    }
                })
            }
        }
    }
}

export const favoriteStore = new Favorites();

FavoriteScreen.js

import { observer } from 'mobx-react';
import { favoriteStore } from '../store/favorites';

function FavoriteScreen() {

    const {userId, petList} = favoriteStore;

    const Item = ({ petName }) => (
        <View style={styles.item}>
            <Text style={styles.title}>{petName}</Text>
        </View>
    );


    const renderItem = ({ item }) => (
        <Item petName={item.petName} />
    );

    return (
        <SafeAreaView style={styles.container}>
            <FlatList
                data={petList}
                keyExtractor={item => item.bookmarkId}
                renderItem={renderItem}
            />
        </SafeAreaView>
    )
}
export default observer(FavoriteScreen);
asyncstorage axios mobx react-native
2021-11-23 17:31:16
1

Nejlepší odpověď

0

Vyřešil jsem

místo:

listData = () => {
            bookmarkApi.get('/').then(function (responseJson) {
                if (responseJson) {
                    this.petList = responseJson.data.filter(data => data.userId == this.userId)
                }
            })
        }

takhle:

  bookmarkApi.get('/').then(bookmarks => {
        this.petList = bookmarks.data.filter(data => data.userId == this.userId)
    })
2021-11-24 08:47:24

Myslím, že jsi právě použil moje řešení, ne? stackoverflow.com/questions/70074073/... označím tuto otázku jako duplicitní
Danila

jen jsem použil, jako je tento
yasin

bookmarkApi.get('/').pak(záložky => { this.petList = záložky.data.filtr(data => data.userId ==.userId) })
yasin

myslím, že jeho ur řešení:)
yasin

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................