#javascript #node.js #reactjs #react-native #redux-saga
Вопрос:
я использую react-native с redux-saga
Я отправляю запрос FLFOOD_UP_REQUEST с помощью useEffect при первоначальном отображении на странице FollowFood.
Однако, если я вернусь на другую страницу до того, как она станет FLFOOD_UP_SUCCESS, FLFOOD_UP_REQUEST не остановится, и позже она станет FLFOOD_UP_SUCCESS, что приведет к ошибке. Если FLFOOD_UP_REQUEST выполняется и переходит на другую страницу, то FLFOOD_UP_SUCCESS завершается успешно, и экран страницы не отображается.
Поэтому я хочу сделать следующее: даже если FLFOOD_UP_REQUEST будет выполнен из-за эффекта использования, если я перемещу другую страницу до FLFOOD_UP_SUCCESS, FLFOOD_UP_REQUEST остановится, и я надеюсь, что FLFOOD_UP_SUCCESS не будет выполнен.
это мой код
(FollowFood.js)
const FollowFood = () => {
useEffect(() => {
dispatch({
type: FLFOOD_UP_REQUEST,
});
}, []);
return (
<>
<FlatList
keyExtractor={(item) => String(item.id)}
onEndReached={() => {
EndReached();
}}
onEndReachedThreshold={2}
refreshing={loading}
renderItem={({item}) => (
<ImageContainer>
<CardFollow item={item} Follow={Follow} />
</ImageContainer>
)}
ListEmptyComponent={<LoadingFood label={'no.'} />}
/>
</>
);
};
export default FollowFood;
(saga.js)
function* flfoodPost(action) {
try {
const result = yield call(flfoodUpAPI, action.data);
yield put({
type: FLFOOD_UP_SUCCESS,
data: result.data,
});
} catch (err) {
yield put({
type: FLFOOD_UP_FAILURE,
error: err.response.data,
});
}
}
Ответ №1:
В чем заключается ошибка, которую вы получаете? Вы не можете что-то передать?
Комментарии:
1. Если FLFOOD_UP_REQUEST выполняется и переходит на другую страницу, то FLFOOD_UP_SUCCESS завершается успешно, и экран страницы не отображается.
Ответ №2:
Нужна дополнительная информация о FLFOOD_UP_REQUEST
том, вызывается ли он с другого экрана, но на основе информации, приведенной здесь, вы можете использовать переменную FLFOOD_COMPLETED_IN_PAGE
и отменить SUCCESS
, если она не была завершена с этой страницы.
Чтобы проверить, заполнено ли оно на той же странице, у вас могут быть другие переменные :
fflood_requested = false
fflood_request_over = false
fflood_request_status = true
FLFOOD_COMPLETED_IN_PAGE = false
В FollowFood.js
настоящее время вы можете прослушивать эти изменения переменных, если измененные пользователем состояния экрана не будут находиться в надлежащем состоянии.
Примечание: вы также можете использовать dipatch FFLOOD_REQUEST_DOWN
для сброса состояний, когда получите ответ.