Refre sh Экран A, когда goBack с React Native, используя крючки - PullRequest
1 голос
/ 11 апреля 2020

У меня есть простое сомнение, что я могу надеяться, что кто-то может помочь мне. У меня есть простое приложение, которое имеет главный экран, на котором загружаются все данные, которые я получаю из базы данных SQLite, но когда я go выхожу на экран «Добавить в базу данных» и добавляю некоторые данные и записи в базу данных, я использую функция для go возврата к предыдущему экрану (props.navigation.goBack()).

К сожалению, когда я попадаю на экран A, моя ловушка не 'refre sh' и не обновляет данные из базы данных. Есть ли способ заставить его обновить sh экран A, чтобы сделать новый вызов в базу данных и обновить sh данные новыми данными?

ps: для вызова базы данных я использую сегодняшнюю дату для получения данных в запросе, поэтому моя дата не обновляется.

Вот мой код:

ScreenA. js

import React, { useEffect, useState } from 'react';
import { View, TouchableOpacity, Text } from 'react-native';

export default function ScreenA() {

   const [data, setData] = useState([]);

    useEffect(() => {
        setData(getDataFromApi())
    }, []);

    return(
        <View>
            { apiResponse() }
            <TouchableOpacity onPress={() => { props.navigation.navigate('ScreenB') }}
                <Text>Add data</Text>
            </TouchableOpacity>
        </View>
    )
}

А вот и ScreenB. js

import React, { useEffect } from 'react';
import { View, TouchableOpacity, Text } from 'react-native';

export default function ScreenB() {

    function goBackToScreenA() {
        addDataToDatabase();
        props.navigation.goBack();
    }

    return(
        <View>
            <TouchableOpacity onPress={() => { goBackToScreenA() }}>
                <Text>Go Back</Text>
            </TouchableOpacity>
        </View>
    );
}

1 Ответ

0 голосов
/ 11 апреля 2020

Я исправил эту ошибку, убив компонент до go для ScreenB, я просто использую props.navigation.replace('ScreenB') insted use navigate. Поэтому, когда я возвращаюсь к ScreenA, он просто снова загружает ScreenA. Как первый раз. И в goBack() я делаю то же самое, замените go обратно на replace('ScreenA') после добавления данных в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...