我正在尝试在我的本机应用程序中定期从我的API获取通知。我试图在根组件中使用setInterval。我只想在用户登录时获取通知,但是当我尝试获取存储在我商店中的当前登录用户时,始终是未定义的。
export default function App() {
return (
<Provider store={store}>
<AppProvider />
</Provider>
)
}
function AppProvider(){
const dispatch = useDispatch()
// fetch notifications every minute
useEffect(() => {
let interval = setInterval(() => {
console.log("fetching notifications")
dispatch(fetchNotifications())
}, 60 000)
return () => clearInterval(interval)
}, [])
return (
<ApplicationProvider
mapping={eva.mapping}
theme={theme}
>
<IconRegistry icons={EvaIconsPack} />
<RootNavigation />
</ApplicationProvider>
)
}
在下面的块中,您可以看到我的提取通知功能的一部分
export const fetchNotifications = (): AppThunk => async (dispatch, getState) => {
const signedInUser = getState().app.signedInUser
// abort if user is not logged in or notifications are already fetching
if (signedInUser === undefined || getState().notifications.isFetching){
console.log("aborting fetching")
console.log(signedInUser)
return
}
try {
// fetch notifications
} catch (err){
// handle error while fetching
}
}
我遇到的问题是,即使我已经登录并设置了登录用户状态,SignedIn用户总是设置为undefined(默认状态)。似乎在setInterval中使用的函数始终使用默认的应用程序状态。您有解决办法吗?