感觉很奇怪,如果是react native,整合redux我是明白的。
但是如果整合到web中,不明白redux是做什么???
如果数据放到redux中,那么用户刷新页面的话,redux-state数据不就消失了么?
整合redux的意义何在?
redux的store相当于一个内存,你刷新网页就会释放内存初始化。
结合大家说的,redux是为了对数据进行控制和管理,以便更好的开发SPA应用。
跟你解释一下关于刷新页面state的变化问题。
刷新页面的时候,state并没有消失,而是初始化了,初始化会带来什么问题呢,就是后端数据的丢失,还有已经改变过的state的状态丢失,但是这真的是个问题吗?不是的,刷新页面,你的网页就相当于第一次加载,那么第一次加载state就会变回初始状态。
这个时候,你应该在组件渲染前请求后端数据,返回新的json保存到state,等到组件didMount时,更新渲染的state。
楼主是把redux理解成数据库了么。。。
简单说下state可以是什么:
- 发ajax请求时,可以表示处于fetching, fetching_success,fetching_fail中的哪些状态
- 如果表单需要表示什么时候可按, 什么时候是禁止的,可以state来表示disabled的状态
- 各种交互的状态
最怕各种问题都没看懂的在这里发一堆看不懂的话。楼主,刚才看了你的问题,我一寻思,心里一惊,还真是啊。我用react+redux写了一个购物网站demo,加了东西到购物车,进购物车一看都在,刷新一下,全没了,以前没想过这个哎。
如果你的数据在刷新页面之后还应该存在,那么这些数据本来的位置就应该在URL里啊
可以在刷新页面之后dispatch一个对应的action来更新redux store,平时可以使用中间件一类的东西把store的数据更新到URL
store不是用来存储购物车这种需要长时间缓存的东西,store是你浏览网页过程中开辟的一个内存,刷新网页或者关闭网页,内存就会清除掉,购物车实现还是应该通过浏览单本地存储跟服务端数据结合使用。
那比如一些数据字典 我是在登陆完成后请求的返回的数据放到store,各页面再取,刷新单个页面 state初始化了 但login不会重新发请求啊 其他页面 就取不到数据字典 这个有什么好的解决办法吗
良好的框架搭建----react+react router+redux+react-redux+react-css-module+react-intl 一套下来规则机制虽然多了些,但是单页+组件化+数据单向流动+数据共享+状态统一管理 对付大型一点的项目来说非常好,前端业务流程复杂就需要redux,只要熟悉了redux的逻辑,开发就变得简便了
整合redux的意义在于将程序的数据流和组件进一步解耦,使用redux后,几乎所有组件都是懒惰组件,复用性提高了不少,另外状态统一管理后,状态流会清晰很多,但是对于复杂度不够,或者较少有全局状态共享的程序,用redux会比较繁琐些。
通俗点讲,react把项目进行组件化划分,这个很清楚把,redux的作用简单的讲就是让你把数据统一交给它管理+操作,找数据的时候找redux,增删改数据的时候也找redux,这样就不会造成组件与组件之间把数据丢来丢去这样混乱的场面。当然小项目的话,那就可以考虑不用redux,毕竟要管的东西不会太多。嫌麻烦,你还可以看看Mobx,更适用于规模不太大的项目。