【问题标题】:Clearing redux store on logout in react native cause error在反应本机导致错误的注销时清除 redux 存储
【发布时间】:2020-08-03 12:38:37
【问题描述】:

当用户注销其帐户时,我使用 redux 设置了 react 本机应用程序,出于安全原因,我希望能够清除 redux 存储。 但这会导致错误,因为某些组件已经挂载并且正在使用来自 redux 存储的数据,有没有合适的方法来做到这一点?

我当前使用的解决方法是在每个组件的开头检查 redux 存储是否存储为空(即值为 null)然后组件返回 null

【问题讨论】:

  • 您的商店应该有一个初始状态(例如:用户未登录)。我建议在用户注销并将商店重置为初始状态时发送重置操作。

标签: reactjs react-native redux react-redux react-navigation


【解决方案1】:

您可以将值更改回其初始状态,而不是清除 reduxStore 值。

例如:-

const initialState = {
loggedIn: false,
data: {}
}

const yourReducer = (state = initialState, action) => {
  switch (action.type) {
    case RESET_STATE: 
    return {
      initialState
    }
}

【讨论】:

  • 我正在将商店设置回初始状态,抱歉造成误解当我尝试使用状态引用值时会出现问题。例如:当数据设置为初始状态后,组件 data.name 中存在类似的内容时,data.name 变为 null 导致组件抛出错误
  • 1.对于这种情况,总是以不会中断的方式编码。例如:- for data.name const { name = '' } = data
  • 我们可以这样做,但我想知道有没有办法告诉 react 在清理商店之前卸载组件?
  • 假设您有 AuthScreen,您在其中要求登录,并且作为用户登录,您会获取所有数据,然后您转到使用该数据的 App Screen 旁边。现在在这种情况下,如果您想在用户注销时清除数据,最好在 AppScreen 的 componentWIllUnmount 或 AuthScreen 的 componentDidMount 中执行。您的 Navigation 处理响应活动生命周期的调用,因此如果您想卸载,您需要导航到屏幕外。
猜你喜欢
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多