【发布时间】:2021-07-01 21:26:31
【问题描述】:
当保存在组件主体中时,以下代码可以正常工作。在 useEffect 内部,它检查 asyncstorage 并分派一个动作(该函数更长,但函数中的其他检查/分派属于同一类型 - 检查 asyncstorage,如果值存在,则分派一个动作)
useEffect(() => {
const getSettings = async () => {
const aSet = await AsyncStorage.getItem('aSet');
if (aSet) {
dispatch(setASet(true));
}
};
getSettings();
}, [dispatch]);
我正在尝试将其移至自定义挂钩,但遇到了问题。自定义钩子是:
const useGetUserSettings = () => {
const dispatch = useDispatch();
useEffect(() => {
const getSettings = async () => {
const aSet = await AsyncStorage.getItem('aSet');
if (aSet) {
dispatch(setASet(true));
}
};
getSettings();
}, [dispatch]);
};
export default useGetUserSettings;
然后在我想调用上面的组件中,我这样做:
import useGetUserSettings from './hooks/useGetUserSettings';
...
const getUserSettings = useGetUserSettings();
...
useEffect(() => {
getUserSettings();
}, [getUserSettings])
它返回一个错误:
getUserSettings 不是函数。 (在 'getUserSettings()' 中,'getUserSettings' 是未定义的
我一直在阅读钩子规则并浏览互联网上的示例,但我可以让它工作。我已经设置了 ESlint,所以它会显示是否存在无效的钩子路径。
【问题讨论】:
标签: react-native async-await react-hooks