博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react中手动重置redux
阅读量:6682 次
发布时间:2019-06-25

本文共 1857 字,大约阅读时间需要 6 分钟。

前段时间使用redux在react-native中,的问题,一直觉得处理的不够优雅,没有根本解决问题。

后来发现再退出登录后,也有部分数据因为redux的逻辑处理数据缓存问题被留了下来,造成一些意料之外的问题,于是要彻底解决重置redux的办法。

我的解决方法是,写一个action用来处理退出登录,每个reducer都监听这个type,return初始值。

//actionexport const LOGIN_OUT = 'LOGIN_OUT';export const loginOut = () => {    return {        type: LOGIN_OUT    }}

  

//reducerimport * as User from '../actions/userAction';const user = {    type: 0,    name: '',    uid: '',    phone: ''}export default (state = user, action) => {    switch (action.type) {       ......        case User.LOGIN_OUT:            return user            break;        default:            return state;    }}

 

//其他reducerimport { LOGIN_OUT } from '../actions/userAction';const finance = {    ...}export default (state = finance, action) => {    switch (action.type) {              ......         case LOGIN_OUT:            return finance            break;        default:            return state;    }}

 

//退出登录时处理逻辑export default connect(    (state) => ({}),    (dispatch) => ({        loginOut: () => {            dispatch(loginOut());            Storage.remove({ key: 'user' });            resetRouter('Login');        }    }))(...)

 

//rn中后退2次逻辑处理    onBackAndroid = () => {        const routers = this.navigator._navigation.state.routes;        if (routers.length > 1) {            this.navigator.pop();            return true;        } else {            if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {                Store.dispatch(loginOut());//redux重置                return false;            }            this.lastBackPressed = Date.now();            ToastAndroid.show('再按一次退出应用', ToastAndroid.SHORT);            return true;        }    };

 

1 export const LOGIN_OUT = 'LOGIN_OUT';2 3 export const loginOut = () => {4     return {5         type: LOGIN_OUT6     }7 }

 

转载于:https://www.cnblogs.com/rion1234567/p/9559233.html

你可能感兴趣的文章
MongoDB 常用命令
查看>>
B/S结构 进销存 客户管理 人资管理系统
查看>>
iOS 学习资料整理 {非常有用,强烈推荐}
查看>>
Linux上安装使用boost入门指导
查看>>
Tomcat去除项目名
查看>>
spring boot Controller不起作用的解决方案
查看>>
分布式ID生成算法总结
查看>>
目录管理和文件管理
查看>>
广播事件的两种类型。
查看>>
cmd进入控制Mysql&出现乱码的问题
查看>>
POJ 2407 Relatives 题解《挑战程序设计竞赛》
查看>>
关于那些最好玩的户外APP合集下(适合资深驴友、牛逼设计狮、装逼攻城狮)...
查看>>
syslog本地和远程日志分离
查看>>
ISCSI共享存储配置跟parted命令简述
查看>>
SysUtils.WrapText - 换行
查看>>
静态路由与浮动路由的配置
查看>>
实现一个日期类
查看>>
安装Oracle 11g R2 单实例数据库(非asm)
查看>>
linux-wget命令笔记
查看>>
Java 内存分配全面浅析
查看>>