【发布时间】:2020-09-01 23:41:53
【问题描述】:
我是 react native 的新手,我有一个我无法理解的错误,控制台发送一条消息说
警告:无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请取消 %s 中的所有订阅和异步任务。%s,一个 useEffect 清理函数
我的代码是下一个
const AuthStack = createStackNavigator();
const LoginStack = () => {
const initialLoginState = {
isLoading: true,
userName: null,
userToken: null,
};
const loginReducer = (prevState, action) => {
switch (action.type) {
case 'RETRIEVE_TOKEN':
return {
...prevState,
userToken: action.token,
isLoading: false,
};
case 'LOGIN':
return {
...prevState,
userName: action.id,
userToken: action.token,
isLoading: false,
};
case 'LOGOUT':
return {
...prevState,
userName: null,
userToken: null,
isLoading: false,
};
}
};
const [loginState, dispatch] = useReducer(loginReducer, initialLoginState);
const authContext = useMemo(() => ({
signIn: (userName, password) => {
let userToken;
userName = null;
if ( userName == 'user' && password == 'pass' ) {
userToken: 'irais';
}
dispatch({ type: 'LOGIN', id: userName, token: userToken });
},
signOut: () => {
dispatch({ type: 'LOGOUT' });
},
}));
useEffect(() => {
setTimeout(() => {
// setIsLoading(false)
dispatch({ type: 'RETRIEVE_TOKEN', token: 'irais' });
},1000);
}, []);
}
【问题讨论】:
标签: react-native react-hooks use-effect react-state