关于vuex的作用。

刚学过vuex,现在自己做了个电商小项目准备用下vuex,于是我就想说到把购物车的商品放vuex里边,方便不同组件调用到购物车里边的数据,但是实际项目中,我想了下又感觉vuex没什么用,原因如下:
当我们点击加入购物车的时候,肯定要把需要加入购物车的商品传给后台呀。那我们进入到购物车组件里边,直接从后台调取数据不就直接可以看到购物车的商品?根本没必要把需要加入购物车的商品传给vuex呀。(当然有一种可能就是传给vuex,可以直接读取,不用再调用后台数据。)
是我vuex用在购物车上本来就是错的?那我可以用在什么地方,举几个例子

阅读 15.1k
8 个回答

在使用库或框架时,需要注意一个「适用性」的问题。
Vuex 或者说实现了 Flux 思想的库,解决了几个问题:

  1. 组件之间的数据通信
  2. 使用单向数据流的方式进行数据的中心化管理

为什么要解决这样的问题呢?其实是因为当程序逻辑过于复杂的时候,非中心化的数据管理会让整个 app 的逻辑非常混乱。
举一个不使用中心化的数据管理机制的具体例子:

一个 app ,有四个 tab,每个 tab 都需要读取用户的资料。如果数据在每个 tab 的控制器里(或者说组件里)都存了一份,那么在用户手动更新了用户资料之后,就需要在每一个 tab 里都更新一遍用户资料,才能保证用户看到的永远是最新的资料。
如你问题里所说,我每进一个 tab 的时候重新请求一下不就好了吗?
这样的解决方案不是不可以,但弊端也非常明显:

  1. 对于服务器端来说,频繁的请求是非常占用资源的,如果你的 app 用户足够多,那么每多出一个请求,对公司来说,都是一大笔钱。如果数据存在了 store 中,并且所有的 tab 都读取同一份数据,在用户更新资料时,在前端更新了 store 中的数据,是不是在切换 tab 时就减少了四个请求呢?
  2. 对于前端开发者来说,如果你的项目足够复杂,团队的规模也不仅是一个人,那么前端代码就会因为数据分散管理而产生非常严重的性能和稳定性的隐患(比如你的同事觉得进入模块就刷新用户资料太慢了,手贱把刷新的代码删了,你又没发现)。

另外单项数据流的好处也很明显,Vue 的作者在知乎上回答过,我就不摘抄了。(地址:https://www.zhihu.com/questio...

你问题中的场景,业务过于简单,确实是没有必要使用 vuex 的,但这不代表其他大型应用不应该使用这个框架。
以上。

这是我用Vuex的一些小见解
1、用来存放控件间状态,就是我在非子父孙关系的组件间传值
2、用来存一些当前要使用请求远程或本地的数据集
3、它有点像H5的Cookie、localStorage之类的,但它刷新(F5)后会自己销毁,而H5的那些本地存储还在浏览器中。

1.按照你所描述的业务场景,的确用vuex的优势并不大,因为还不够复杂
当然,我们也不是为了要用vuex,而把业务场景,全由前端来实现,项目是个整体的工程,如果像你描述的那样,把传给后端,下一个页面再由后端返回相应的数据,这样能保障数据完整性与安全性的话,其实也没什么不好的。

2.听饿了么的朋友说起过,曾经使用vuex的经历:当遇到多张订单合并购买的时候。
因为涉及到,不同的餐厅下的不同菜品,还有可用的不同的优惠券组合,这时配合chrome的插件vue-devtools,能很好的查看数据流的走向,同时也方便同组人员的调试。

3.如果不是特别复杂的应用,也可以用到vuex。主要用来处理异步数据
后端传回来的数据,经常是需要处理的,通过vuex的action,接到数据后,经过处理,可以直接return,也可以mutation给state,然后通过mapGetters,就能直接在组件里用了,也挺方便的。

所以,用不用vuex,取决于你的项目复杂度,还有整体工程的规划,希望对你有帮助。

可以把他当成一个内存数据库用

个人感觉 需要用到的时候就自然而然会去找这个了。

可以先搞清楚vuex主要解决的痛点问题,然后自然而然就知道在哪些场景下用了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题