【发布时间】:2021-04-12 14:05:46
【问题描述】:
我想调用一个api请求
- 组件挂载时
- 在屏幕之间跳转时
这里是那个api示例代码
{
"api_update_list": {
"menu": "2021-04-10 04:00:24",
"posts": "2021-04-10 04:00:34",
"category": "2021-04-10 04:00:34",
"products": "2021-04-10 04:00:34",
"wishlist": "2021-04-10 04:00:34",
"collection": "2021-04-10 04:00:34",
"hot_items": "2021-04-10 04:00:34",
"people": "2021-04-10 04:00:34"
}
}
我之所以想调用那个api是因为我想检查离线数据是更新与否。我使用 react-persist 保存所有数据。假设我有 4 个组件。 (实际上,我可能有很多组件)
const ScreenA = () => {
const dispatch = useDispatch();
const appStatus = useSelector(state => state.app.status); //it is from redux with default value idle
useEffect(() => {
if ( appStatus === "idle" && isConnected ) {
dispatch(fetchAppData()); //Data by createAsyncThunk
}
}, [appStatus])
return(
<Text>Screen A</Text>
)
}
const ScreenB = () => {
const dispatch = useDispatch();
const appStatus = useSelector(state => state.app.status); //it is from redux with default value idle
useEffect(() => {
dispatch(statusUpdate('idle')); //I have to reset idle in every component like that to request again
}, [appStatus])
return(
<Text>Screen B</Text>
)
}
const ScreenC = () => {
const dispatch = useDispatch();
const appStatus = useSelector(state => state.app.status); //it is from redux with default value idle
useEffect(() => {
dispatch(statusUpdate('idle')); //I have to reset idle in every component like that to request again
}, [appStatus])
return(
<Text>Screen C</Text>
)
}
注意
- 如果我将数据保存在 AsyncStorage 中,我不想再次请求数据。
- 我会通过检查数据 api 的日期和时间来决定是否应该请求数据(api 格式示例代码在上面)。
请告诉我您遇到过这种情况。
【问题讨论】:
-
你研究过 useFocusEffect 吗?
标签: react-native redux react-redux