• Vue基础-05


    本节:

    一、pinia的安装。安装 | Pinia 中文文档

    Pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。

    pinia可以记录全局的一个状态,比如是否登录等等。。

    (1)在终端下载pinia

    npm install pinia

    顺便安装歌sass,这个其实就是更高级的css,让浏览器更好的读懂。 

    npm install sass 

    (2)在main.js 

    1.引入pinia 

    1. import { createPinia } from 'pinia'

    2.注册使用pinia

    app.use(createPinia());

    二、定义store

    一个 Store (如 Pinia)是一个实体,它持有未绑定到您的组件树的状态和业务逻辑。换句话说,它托管全局状态。它有点像一个始终存在并且每个人都可以读取和写入的组件。它有三个概念stategetters 和 actions 并且可以安全地假设这些概念等同于组件中的“数据”、“计算”和“方法”。

    store说白了就是存储信息的文件。

    (1)创建一个store,创建一个文件夹,自定一个js文件

    1. //1.引入pinia
    2. import { defineStore, storeToRefs } from 'pinia'
    3. //2.写一个类似data的格式,存储数据
    4. export const oneStore = defineStore("one", {
    5. //one这个全局只能唯一,不能重复,oneStore是引用时候的名字
    6. state: () => {
    7. return {//这里类似data,存储变量
    8. count: 0,
    9. content: "总有人会爱你"
    10. }
    11. },
    12. actions: {//这里类似methods,用来放方法的
    13. },
    14. getters: {//这里是类似conputed,计算属性
    15. }
    16. })

    (2)简单的使用store

    1.引入store   2.实例化store里面的内容,就可以使用啦

    1. <template>
    2. <div>
    3. page1
    4. <div>1</div>
    5. {{ counter.content }}
    6. <!-- 渲染变量 -->
    7. </div>
    8. </template>
    9. <script setup>
    10. //1、引入store
    11. import { defineStore, storeToRefs } from 'pinia'
    12. import { oneStore } from '../store/testStore'
    13. //2、注册store,实例化store
    14. const counter = oneStore()
    15. //不知道counter是什么,可以输出,输出发现就是state里面的内容,是一个数组
    16. </script>
    17. <style scoped>
    18. </style>

    使用和修改store里面的值和方法。

    1. <template>
    2. <div>
    3. page1
    4. <div>1</div>
    5. {{ counter }}
    6. <!-- 渲染变量 -->
    7. <div @click="oneClick">点击改变store数据</div>
    8. </div>
    9. </template>
    10. <script setup>
    11. //1、引入store
    12. import { defineStore, storeToRefs } from 'pinia'
    13. import { oneStore } from '../store/testStore'
    14. //2、注册store,实例化store
    15. const counter = oneStore()
    16. //不知道counter是什么,可以输出,输出发现就是state里面的内容,是一个数组
    17. //3.修改store里的变量(因为是vue3所以要用ref的形式拿到变量)
    18. let { count1 } = storeToRefs(counter);
    19. function oneClick() {
    20. counter.testAction();//直接调用store里面方法
    21. counter.content = "天若有情天亦老"//直接修改store里面的值
    22. count1.value = 1000//通过vue3特有的ref写法,修改store里面的值
    23. }
    24. </script>
    25. <style scoped>
    26. </style>

    在store文件里面,在getters计算属性里面改变值。

    1. getters: {//这里是类似conputed,计算属性
    2. OneCount(state) {
    3. //这里也是直接写方法,
    4. //不同是actions里面是可以用this指对象,getters是把state放到传参里面
    5. return state.count1 = 1341 + state.content
    6. }
    7. }

  • 相关阅读:
    使用FabricJS创建Image对象的JSON表示
    Ubuntu离线源的制作
    MySQL查询数据库所有表名及其注释
    每日4道算法题——第029天
    外贸供应链ERP怎么选?全流程综合管理解析
    linux 下代码检查工具部署使用
    手写哈希表
    智慧城市井盖选择,智能井盖传感器特点介绍
    微信小程序——跳转方式
    MySQL是如何执行一条SQL查询语句的
  • 原文地址:https://blog.csdn.net/m0_59214979/article/details/126429499