前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第八十九期:对Pinia的简单思考

第八十九期:对Pinia的简单思考

作者头像
terrence386
发布2022-07-15 11:06:49
3660
发布2022-07-15 11:06:49
举报

对Pinia的简单思考

今天出门去和新认识的小伙伴讨论了一下技术方案。

我想未来如果有机会的话,会和他们一起做一些事情吧。

回来的路上我在想一个问题,互联网说白了还是对信息的处理。

眼睛看到的东西,是视觉信息;汽车移动,是轨迹信息;个人的身份信息,店铺信息,上课学习的知识等等,都是信息。

数据不过是信息的载体。

然后就想到了这个公众号后台收到的消息中有不少都回复的消息是要vuex的源码分析文档。

关于vue, 3.0相关的状态管理已经更新成了Pinia。对于Pinia我还没怎么看过源码,预计6月份开始吧,重新读一遍它的源码,看看能不能写个文档出来。

看了Pinia官方文档,很简单。主要就是讲了两件事:

  • 一是告诉我们为什么要写Pinia
  • 二是告诉我们怎么使用Pinia

为什么要写Pinia?看了官方文档之后,我们很容易得出结论。vue更新了,有了新的组合式api,状态管理相关的部分理所当然的也需要更新。另一方面,原有的vuex的写法每次都需要我们手动去往状态对象里添加新的属性或者模块儿。而Pinia可以使用快捷的api直接动态生成,确实很方便。

而且放弃了mutations的操作,同时也不用嵌套多种模块儿,对ts的支持度也很好。

我们可以从官方文档中简单的示例中思考一下它大致包含的内容:

  • 定义一个store
代码语言:javascript
复制
// 定义一个store
// stores/counter.js
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => {
    return { count: 0 }
  },
  // could also be defined as
  // state: () => ({ count: 0 })
  actions: {
    increment() {
      this.count++
    },
  },
})
  • 在组件中使用
代码语言:javascript
复制
import { useCounterStore } from '@/stores/counter'

export default {
  setup() {
    const counter = useCounterStore()

    counter.count++
    // with autocompletion ✨
    counter.$patch({ count: counter.count + 1 })
    // or using an action instead
    counter.increment()
  },
}

defineStore方法,如果我们简单思考一下。他其实就是接收两个参数,第一个参数是ID,第二个参数是状态对象。这两个参数经过处理,最后又返回一个对象,返回的对象中有状态对象上定义的相关属性和action方法。同时还有一些继承而来的方法,这些方法可以在组件中直接使用。

当然,这只是从一个简单的写法中,我们可以做出上面的推测。源码中的实现过程肯定是要比这个复杂的多的多。

早上出门的时候在想,其实前端的开发的需求还是很旺盛的,web,小程序,app以及pc的客户端其实都有很多需求,如果个人的技术栈仅仅限制在web和小程序,岂不是要失去很多机会?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaScript高级程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档