vue3 学习和项目改造,关于 vuex 的问题请教

2020-02-09 18:15:22 +08:00
 zhangchaojie

想要早点学习 Vue3,所以用 composition api 改一下项目,但是刚开始就遇到了麻烦:setup 函数 this 指向 null,所以 vuex 中 this.$store、mapState、mapMutations 都不能用了,有点尴尬,大家怎做的,要用 inject 和 provide 重做状态管理吗?😳

5862 次点击
所在节点    Vue.js
45 条回复
randyo
2020-02-09 18:20:55 +08:00
发布了吗,还没看过 vue3😂
noe132
2020-02-09 18:31:48 +08:00
推荐自己写 service,将 数据和操作 封装成一个独立单元

// xxxService.ts
const createxxxService = () => {
const state = reactive({......})
const action1 = () => ......
const action2 = () => ......

const computed1 = computed(() => ...)

return { state, action1, action2, computed1 }
}

export const xxxService = createxxxService()

然后在需要此 store 的地方 import { xxxService } 进来,通过 xxxService.state 访问相应的值,xxxService.action()调用相应的函数。比较像 angular 的 service。只不过是手动 import。

vuex 在 ts 里极其不友好,所以一开始就没考虑 vuex。inject provide 也不推荐使用
zhangchaojie
2020-02-09 18:51:00 +08:00
@noe132 收到,好好学习一下
zhangchaojie
2020-02-09 18:53:06 +08:00
@randyo 有个尝鲜版 @vue/composition-api
sodatea
2020-02-09 18:55:37 +08:00
可以先尝试一下 pinia https://github.com/posva/pinia/tree/next
Jat001
2020-02-09 19:00:34 +08:00
实在搞不懂前端界为什么这么激进,没几年就发布一个大版本,是开发速度更快了还是学习成本变低了?
工作这么多年,我明白了一个道理,那就是你的用户、你的老板甚至是你的领导都不关心你在用什么框架,他们只关心能否按时完成任务、少出 bug、不要给其他人挖坑、做出来的东西效果怎么样,无论是你用的是最新的技术还是上一代的技术,只要结果一样,就没人关心过程。
而团队项目更是没人想把底层框架从老版本迁移到最新版,一堆新需求源源不断,谁没事干去迁移框架啊,算绩效吗?你这边在重构,那边还在开发新需求,一堆冲突谁来合并,一堆测试谁来修,出了 bug 算谁的?
manami
2020-02-09 19:05:32 +08:00
vue3 不是还没发布吗?
hyy1995
2020-02-09 19:12:08 +08:00
玩玩源码就行了,这还没发布呢没必要那么急。。。
zhangchaojie
2020-02-09 19:25:37 +08:00
@Jat001 不学习新东西,到面试的时候就尴尬了,不管怎么样都得学
zhangchaojie
2020-02-09 19:26:08 +08:00
@manami 有个尝鲜版 @vue/composition-api
zhangchaojie
2020-02-09 19:26:21 +08:00
@hyy1995 早点吃螃蟹🦀
zhangchaojie
2020-02-09 19:27:28 +08:00
@sodatea 多谢,马上用用
Jat001
2020-02-09 19:39:11 +08:00
@zhangchaojie #9 面试你的人也不一定了解新版本,你不讲也不会问你,大家都忙着怼需求呢
imnaive
2020-02-09 19:44:51 +08:00
存到 localstorge 可行么?
zhangchaojie
2020-02-09 19:52:57 +08:00
@imnaive 要动态变化啊,不行,上面大佬给的链接可以,https://github.com/posva/pinia/tree/next
pecopeco
2020-02-09 19:52:57 +08:00
pecopeco
2020-02-09 19:59:15 +08:00
@Jat001 如果不是尤大、Misko Hevery、facebook 等等这些“激进”的先驱者,前端可能到现在还在用 jq 去做 dom 操作,遇到复杂的交互逻辑熬白了头
zhangchaojie
2020-02-09 20:09:51 +08:00
@Jat001 现在面试肯定要问,vue2 的响应式原理是什么,vue3 的响应式原理是什么,为什么要有这个变化,必问,如果面试 Vue 的岗位
Jat001
2020-02-09 20:31:12 +08:00
@pecopeco #17 我们说的不是一回事,大部分公司都不是互联网技术驱动的,华为 京东 ebay 不都还在用 jquery 搞吗。我的观点是,前端技术对大部分公司来说都不是核心竞争力,这些公司没有动力去频繁更新前端技术,激进的版本更新策略只能让这些公司对 vue 望而却步
Jat001
2020-02-09 20:43:56 +08:00
@zhangchaojie #18 现在前端岗位都已经具体到某一框架了吗……反正我面试后端从来没听说过只用一门语言的,工作中经常需要现学现卖,小公司不会分那么细没办法。我不是反对学习新技术,只是觉得一个框架而已,如果你对 2.x 了如指掌,面试官是不会在乎你没学 3.x 的,毕竟谁也不会在生产环境随便用新技术的。还是那句话,旧项目除非万不得已,没人愿意做大版本迁移,吃力不讨好的事情。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/643254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX