- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章全新的 Vue3 状态管理工具:Pinia由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Vue3 发布已经有一段时间了,它采用了新的响应式系统,而且构建了一套全新的 Composition API。Vue 的周边生态都在加紧适配这套新的系统,官方的状态管理库 Vuex 也在适配中,为此官方提出了一个 Vuex 5 的全新提案.
在这个提案下方,有个评论很有意思。简单翻译一下:
好巧不巧,Vuex5 的提案,与 Pinia 实现的功能不能说毫无关系,只能说一模一样,今天的文章就来给大家介绍一下这个菠萝.
在现有项目中,用过如下命令进行 Pinia 模块的安装.
安装完成后,需要在 Vue3 项目的入口文件中,进行导入安装.
要使用 Pinia 的话,只需要定义一个 store,然后在用到该数据的地方进行导入.
除了使用上述类似 vuex 的方式来构建 state,还可以使用 function 的形式来创建 store,有点类似于 Vue3 中的 setup().
前面也介绍过,Pinia 提供了两种方式来使用 store,Options Api 和 Composition Api 中都完美支持.
在 Options Api 中,可直接使用官方提供的 mapActions 和 mapState 方法,导出 store 中的 state、getter、action,其用法与 Vuex 基本一致,很容易上手.
Composition Api 中,不管是 state 还是 getter 都需要通过 computed 方法来监听变化,这和 Options Api 中,需要放到 computed 对象中的道理一样。另外, Options Api 中拿到的 state 值是可以直接进行修改操作的,当然还是建议写一个 action 来操作 state 值,方便后期维护.
在 Vuex 中,TypeScript 的类型提示做得不是很好,在进行类型推导时,只能找到它的 state。特别是写代码的过程中,代码提示就很不智能.
而 pinia,就能推导出定义的所有 state、getter、action,这样在写代码的时候,就会方便很多.
主要是 pinia 通过 TypeScript 进行了十分友好的类型定义,感兴趣的可以看看 pinia 的类型定义文件(pinia.d.ts):
由于使用了模块化设计,所有的 store 都能够单独引入,而不是像 vuex 一样,通过 modules 的方式,将所有的 module 挂载到一个 store 上.
假设,我们当前通过 Vuex 创建了一个 Store,这个 Store 下有两个 module,分别是用户模块(User)和商品模块(Goods)。即使当前首页只使用到了用户信息,但是整个 Store 都会被打包到首页的 js chunk 中.
如果我们使用 pinia,我们会使用 defineStore 定义两个 完全是分离状态的 store,两个页面在引入时,也互不影响。最后打包的时候,首页的 js chunk 和商品页的 js chunk 会分别打包对应的 store.
Pinia 的介绍到这里就告一段落了,如果现在有新项目要使用 Vue3 进行开发,推荐无脑使用 Pinia,更加简洁,而且大小仅 1KB.
原文链接:https://mp.weixin.qq.com/s/lzjeEMPd_V8OmIe8tnQRuQ 。
最后此篇关于全新的 Vue3 状态管理工具:Pinia的文章就讲到这里了,如果你想了解更多关于全新的 Vue3 状态管理工具:Pinia的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在新的 Nuxt3 应用程序之上设置了 Pinia 并启动了开发服务器,并按顺序使用这些命令: npx nuxi init nuxt-app cd nuxt-app npm install npm
我正在从 vue 4.x 迁移到 pinia,我的一个文件需要来自商店的 api key 。但是即使我遵循 Pinia documentation 也无法让它工作.这是我如何使用 pinia //存储
我想弄清楚使用 Pinia 存储而不是仅使用纯 ts 可组合函数的优势是什么 const userName = ref('') export default function useUser() {
我在 main.js 中进行 session API 调用,并将响应中的值用作我的根存储的初始值。在 vuex 中,它是这样处理的, DataService.getSession() .then(
我正在使用 OptionsAPI 和 Pinia Store 构建一个 Vue 3 应用程序,但我经常遇到一个问题,指出我试图在 createPinia() 之前访问该商店叫做。 我一直在关注文档以在
Vue3 发布已经有一段时间了,它采用了新的响应式系统,而且构建了一套全新的 Composition API。Vue 的周边生态都在加紧适配这套新的系统,官方的状态管理库 Vuex 也在适配中,
我目前在一个 Vue 3 项目中工作。 使用 this.$router.push({}) 似乎在 Pinia 商店中不起作用。 我也尝试过导入 useRouter --> import { useRo
我目前在一个 Vue 3 项目中工作。 使用 this.$router.push({}) 似乎在 Pinia 商店中不起作用。 我也尝试过导入 useRouter --> import { useRo
项目代码以上传至码云,项目地址:https://gitee.com/breezefaith/vue-ts-scaffold 。 目录 前言 脚手架
我正在为 Quasar + Pinia 使用 Vue 3 + Vite 插件进行商店管理。我遵循了所有官方文档(Quasar、Pinia)。但是我收到了这个错误。 [Vue warn]: in
我试图了解可组合的目的。我有一个像这样的简单组合,并试图从 Pania 商店查看状态,其中 watch不触发: import { ref, watch, computed } from "vue";
我正在使用 pinia 和 vue-router 4.x ,但我在商店中使用它们时遇到问题。 每个人都独立工作,但不能一起工作。 如果我使用 import router from '../router
我目前正在开发我的第一个 vue 应用程序,目前正在构建登录逻辑。 对于国家管理,正在使用 pinia。我创建了一个 Pinia Store 来管理全局的“isLoggedIn”状态。 import
我有一个 pinia 商店,使用如下设置语法创建: defineStore('id', () => { const counter = ref(0) return { counter }
我有一个 pinia 商店,使用如下设置语法创建: defineStore('id', () => { const counter = ref(0) return { counter }
使用 Vite 快速搭建脚手架 命令行选项直接指定项目名称和想要使用的模板,Vite + Vue 项目,运行(推荐使用yarn) # npm 6.x npm init vite@latest my
我正在尝试使用包 pinia-plugin-persistedstate 在新的 Nuxt 3 应用程序中保留变量的状态。 我已经实现了 guide 中提供的步骤对于 nuxt 3: 创建了 /plu
我正在开发一个使用 vue 和 firebase 的网站。在身份验证部分之后,用户进入仪表板,其中有他的项目列表,这些项目是 firestore 中用户文档的子集合。 我创建了一个管理这些数据的 pi
我无法让访问同一商店的多个组件响应更新,直到我弄乱 dom 元素来触发新的渲染。 在我的 Pinia 商店中,我有一个数组和一个更新方法: let MyArray: IMyItem[] = [
我有一个 react 值,我想将其存储在 pinia 存储中。 const data = ref({}); async function loadData() { fetch("...")
我是一名优秀的程序员,十分优秀!