对本地redux定期获取做出反应

时间:2020-08-07 20:11:24

标签: react-native react-redux

我正在尝试在我的本机应用程序中定期从我的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中使用的函数始终使用默认的应用程序状态。您有解决办法吗?

0 个答案:

没有答案