Как использовать хук useFocusEffect для извлечения данных? - PullRequest
1 голос
/ 11 апреля 2020

Я новичок ie в React Native и только что обновился до react-navigation-5

И я изо всех сил пытаюсь заменить старую функцию listener новым хуком useFocusEffect

Вот старая функция:

const loadTrips = useCallback(async() => {
        setError(null);
        setIsRefreshing(true);
        try {
            dispatch(tripActions.fetchTrip());
        } catch (error) {
            console.log(error);
            setError(error.message);
        }
        setIsRefreshing(false);
    },[dispatch, setIsRefreshing, setError]);
*********************************************************
// This is the old function
    useEffect(() => {
        const willFocus = props.navigation.addListener(
            'willFocus',
            loadTrips
        );
        return () => {willFocus.remove();}
    },[loadTrips]);
*********************************************************

    useEffect(() => {
        setIsLoading(true);
        loadTrips().then(
            setIsLoading(false),
        );
    }, [dispatch, loadTrips])

РЕДАКТИРОВАТЬ 1

Я пытался передать функцию loadtrips в useFocusEffect, но она показывает ошибку

useFocusEffect(loadTrips) 

ПОЖАЛУЙСТА, ПОМОГИТЕ

Error

1 Ответ

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

Вы можете просто передать функцию loadTrips на useFocusEffect

const loadTrips = useCallback(async() => {
        setError(null);
        setIsRefreshing(true);
        try {
            dispatch(tripActions.fetchTrip());
        } catch (error) {
            console.log(error);
            setError(error.message);
        }
        setIsRefreshing(false);
    },[dispatch, setIsRefreshing, setError]);
useFocusEffect(useCallback(() => loadTrips(), [dispatch, setIsRefreshing, setError]));
...