广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vuex5中的Pinia插件机制
  • 116
分享到

vuex5中的Pinia插件机制

2024-04-02 19:04:59 116人浏览 八月长安
摘要

目录Vuex5 Pinia插件机制通过插件扩展1、使用2、应用pinia和vuex的区别vuex5 Pinia插件机制 通过插件扩展 .给每个store添加公共属性.给stores添

vuex5 Pinia插件机制

通过插件扩展

  • .给每个store添加公共属性
  • .给stores添加新的配置
  • .给stores添加新的方法
  • .包裹重用已有方法
  • .改变或者取消actions
  • .应用额外的副作用像localstorage
  • .应用给指定的store

1、使用

import { createPinia } from 'pinia'
const pinia = createPinia()

(1)定义插件

function SecretPiniaPlugin(context) {
context.pinia;  pina实例`createPinia()`
context.app;  vue实例`createApp()`
context.store;   正在配置的store
context.options;  store的配置`defineStore()`
  • (1)设置响应式数据

每个store都是Reactive包裹的对象,所以使用起来可直接解套ref

context.store.hello = ref('secret');
context.store.hello;
  • (2)state添加数据
const globalSecret = ref('secret')

可直接添加

store.secret = globalSecret

通过$state,可获得devtools追踪、ssr中进行序列化

store.$state.secret = globalSecret

添加第三方数据,不要求响应式时,需要使用markRow进行转换

store.router = markRaw(router)
  • (3)添加监听器
  store.$subscribe(() => {
  store改变时触发
  })
  store.$onAction(() => {
     action触发时触发
  })
...
}

(2)应用插件

pinia.use(SecretPiniaPlugin)

(3)devTools能追踪修改

方式一:返回修改的操作

pinia.use(({ store }) => ({
  store.hello = 'world'
}))

方式二:显示添加

pinia.use(({ store }) => {
  store.hello = 'world'
  if (process.env.node_ENV === 'development') {
    store._customProperties.add('hello')
  }
})

2、应用

(1)给每个store添加公共state

function SecretPiniaPlugin() {
  return { secret: 'the cake is a lie' }
}
pinia.use(SecretPiniaPlugin)

(2)改写store中的action

.此例为改写成防抖action

defineStore('search', {
  actions: {
    searchContacts() {
    },
  },
  debounce: {
    searchContacts: 300,
  },
})

对于函数写法的store,自定义选项放入第三个参数中

defineStore(
  'search',
  () => {
    ...
  },
  {
    // this will be read by a plugin later on
    debounce: {
      // debounce the action searchContacts by 300ms
      searchContacts: 300,
    },
  }
)

插件中: 

import debounce from 'lodash/debunce'
pinia.use(({ options, store }) => {
  if (options.debounce) {
  
    将设置了debounce的store中的原action改写成具有防抖功能的action
    
    return Object.keys(options.debounce).reduce((debouncedActions, action) => {
      debouncedActions[action] = debounce(
        store[action],
        options.debounce[action]
      )
      return debouncedActions
    }, {})
  }
})

pinia和vuex的区别

(1)它没有mutation,他只有state,getters,action【同步、异步】使用他来修改state数据

(2)他默认也是存入内存中,如果需要使用本地存储,在配置上比vuex麻烦一点

(3)语法上比vuex更容易理解和使用,灵活。

(4)pinia没有modules配置,没一个独立的仓库都是definStore生成出来的

(5)state是一个对象返回一个对象和组件的data是一样的语法

 需要在页面组件中引入我们要修改数据

安装的本地存储插件可以是npm也可以是year

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vuex5中的Pinia插件机制

本文链接: https://www.lsjlt.com/news/164863.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vuex5中的Pinia插件机制
    目录vuex5 Pinia插件机制通过插件扩展1、使用2、应用pinia和vuex的区别vuex5 Pinia插件机制 通过插件扩展 .给每个store添加公共属性.给stores添...
    99+
    2022-11-13
  • PostgreSQL插件hook机制
    internal_load_library postgresql-> PG_init = (PG_init_t) pg_dlsym(file_scanner->handle, "_PG_...
    99+
    2022-10-18
  • C++插件化NDD源码的插件机制实现解析
    目录NDD介绍 插件的优势NDD插件机制分析插件接口插件实现NDD插件加载过程插件机制是一种框架,允许开发人员简单地在应用程序中添加或扩展功能。它使广泛使用,因为它可以作为...
    99+
    2023-03-20
    c++插件化 c++ NDD源码插件机制
  • Mybatis插件机制详细解析
    本篇内容介绍了“Mybatis插件机制详细解析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mybatis...
    99+
    2022-10-18
  • PHP插件机制的原理是什么
    这篇文章主要讲解了“PHP插件机制的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP插件机制的原理是什么”吧!插件,亦即Plug-in,是指一类特定的功能模块(通常由第三方开发...
    99+
    2023-06-17
  • Android系统实现DroidPlugin插件机制
    360手机助手使用的 DroidPlugin,它是360手机助手团队在Android系统上实现了一种插件机制。它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型AP...
    99+
    2022-06-06
    droidplugin Android
  • MyBatis插件机制超详细讲解
    目录MyBatis的插件机制InterceptorChainMyBatis中的PluginMyBatis插件开发总结MyBatis的插件机制 MyBatis 允许在已映射语句执行过程...
    99+
    2022-11-13
    MyBatis插件机制 MyBatis插件机制原理 MyBatis插件
  • Golang库插件注册加载机制的问题
    目录注册加载总结最近看到一个内部项目的插件加载机制,非常赞。当然这里说的插件并不是指的golang原生的可以在buildmode中加载指定so文件的那种加载机制。而是软件设计上的「插...
    99+
    2022-11-13
  • thinkphp插件钩子的实现机制是什么
    这篇文章主要介绍“thinkphp插件钩子的实现机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp插件钩子的实现机制是什么”文章能帮助大家解决问题。现在主流的cms或者blog...
    99+
    2023-07-05
  • C++ NDD源码的插件机制怎么实现
    本篇内容主要讲解“C++ NDD源码的插件机制怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++ NDD源码的插件机制怎么实现”吧!插件机制是一种框架,允许开发人员简单地在应用程序中添...
    99+
    2023-07-05
  • 深入理解Vue的插件机制与install详细
    前言: 我们在使用Vue的时候,经常会使用并写一些自定义的插件,然后利用Vue.use引入。所以提到写插件,install这个方法是必不可少的。Vue.js 的插件应该暴露一个 `i...
    99+
    2022-11-12
  • Java插件扩展机制之SPI的示例分析
    这篇文章给大家分享的是有关Java插件扩展机制之SPI的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是SPISPI ,全称为 Service Provider Interface,是一种服务发现机制...
    99+
    2023-06-20
  • ThinkPHP中钩子、行为扩展和插件机制的示例分析
    小编给大家分享一下ThinkPHP中钩子、行为扩展和插件机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!thinkphp是什么thinkphp属于一种...
    99+
    2023-06-06
  • Java插件扩展机制之SPI案例讲解
    目录什么是SPI与 接口类-实现类 提供的RPC 方式有什么区别?假设我们需要实现RPC,是怎么做的?那RPC究竟跟SPI什么关系?SPI的应用场景怎么实现一个SPI?中间件是怎么实...
    99+
    2022-11-12
  • MyBatis-Plus插件机制及通用Service新功能
    目录1.高级(插件机制)1.1自动填充1.1.1 原理1.1.2 基本操作1.2乐观锁1.2.1 什么是乐观锁1.2.2. 实现1.2.3 注意事项1.3逻辑删除1.3.1 什么是逻...
    99+
    2022-11-13
  • thinkphp(php)插件钩子(hooks)分析的简单实现机制
    目录前言举例说明钩子的简单实现代码钩子核心类Hook.php:简单的插件demo:插件实现的地方,即上文的注册的文件:入口文件index.php运行接口如下:总结现在主流的cms或者...
    99+
    2023-03-11
    thinkphp插件钩子(hooks)实现机制 php插件钩子 php hooks
  • WinForm使用DecExpress控件中的ChartControl插件绘制图表
    目录1.绘制图表基本步骤准备数据并绑定根据数据创建图形展现根据图形对象创建一个图表并绑定到CharControl中调用函数绘制图表2.柱状图准备数据创建图形展现对象方法根据图形对象创...
    99+
    2022-11-13
  • 如何解决Golang库插件注册加载机制的问题
    这篇文章主要介绍如何解决Golang库插件注册加载机制的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近看到一个内部项目的插件加载机制,非常赞。当然这里说的插件并不是指的golang原生的可以在buildmod...
    99+
    2023-06-29
  • 插件化机制优雅封装你的hook请求使用方式
    目录引言useRequest 简介架构useRequest 入口处理Fetch 和 Pluginsstate 以及 setState插件化机制的实现核心方法 —&mdas...
    99+
    2022-11-13
  • 计算机中插件指的是什么东西
    小编给大家分享一下计算机中插件指的是什么东西,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!插件是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作