react-native - useEffect 无限循环,即使使用空数组作为依赖项
问题描述
我正在运行下面的代码,但它会导致组件中的无限重新渲染。超级奇怪
const dispatch = useDispatch()
const token = useSelector(state => state.token)
const getUser = async () => {
try {
const response = await baseUrl.get('/users/getUser', {
headers: {
authorization: token
}
})
dispatch(SET_USER(response.data.user))
} catch (error) {
Alert.alert(error.response.data.message)
}
}
useEffect(()=>{
getUser()
},[])
解决方案
可能是你缺少一些依赖,尝试为 useEffect 添加依赖,然后用 useCallback 包装 getuser,并为 useCallback 钩子添加依赖。
const getUser = useCallback(async () => {
try {
const response = await baseUrl.get('/users/getUser', {
headers: {
authorization: token
}
})
dispatch(SET_USER(response.data.user))
} catch (error) {
Alert.alert(error.response.data.message)
}
},[dispatch, SET_USER]);
useEffect(() => {
getUser();
}, [getUser]);
推荐阅读
- swift - 从 Swift 4 中的范围获得的下标子数据导致 EXC_BAD_INSTRUCTION
- r - 如何将以下日期格式转换为 R 中的标准日期格式?
- excel - Excel 日期格式正在 Moblie Preview 上从日期更改为常规
- pyomo - pyomo 中的差异化
- sql - 在树形结构中计算公司中的人员
- c++ - 尝试实例化 bitset 并获取“非类型模板参数不是常量表达式”
- ios - Xcode 9.3 快速帮助(选项+单击)显示为空
- node.js - Hyperledger Fabric 教程“错误:未知标志:--peerAddresses”
- javascript - 基于Javascript的滑块不起作用
- php - 将存储在 JSON 数组中的字符串转换为 PHP 中的变量名