我的回调在一次又一次调用后返回相同的状态
我是反应类中反应钩子的新手,我本可以使用 shouldcomponentupdate 并且可以解决这个问题
但是 usecallback 钩子中没有参数
import React, {
useLayoutEffect,
useState,
useCallback,
useEffect,
} from "react";
import { StyleSheet, Text, View, Platform, YellowBox } from "react-native";
import { HeaderButtons, Item } from "react-navigation-header-buttons";
import HeaderButton from "../components/HeaderButton";
import { Switch } from "react-native-paper";
import Colors from "../constants/Colors";
//check use callback value first
YellowBox.ignoreWarnings([
"Non-serializable values were found in the navigation state",
]);
const FilterSwitch = ({ label, state, onChange }) => (
<View style={styles.filterContainer}>
<Text>{label}</Text>
<Switch
value={state}
trackColor={{ true: …Run Code Online (Sandbox Code Playgroud) 所以我正在更新 useEffect 挂钩中的状态并收到此错误,如果我们在 useEffect 挂钩中使用 async/await 语法,我不知道如何使用清理功能
错误:警告:无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明应用程序中存在内存泄漏。要修复此问题,请取消 %s.%s 中的所有订阅和异步任务,这是一个 useEffect 清理函数,
const getToken = async () => {
const mytoken = await AsyncStorage.getItem("fb_token");
if (mytoken) {
navigation.navigate("Main", { screen: "Map" });
setToken(mytoken);
} else {
setToken(false);
}
};
getToken();
}, [navigation]);```
How to update state and use clean up function should i declare this function outside hook but if i do that how would i use that function as a clean up?
Run Code Online (Sandbox Code Playgroud)