指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

Pina之storeToRefs的使用: storeToRefs 是 Pinia 提供的一个非常有用的函数,它的主要作用就是保持store中的状态的响应性,确保在store中的值更新时,组件会自动重新渲染。

以下是关于 storeToRefs 的一些重要点:

1.响应式: storeToRefs 返回的是响应式引用(refs)。这意味着当store中的值改变时,使用这些引用的组件会自动更新。

2.只针对状态: storeToRefs 只会为 store 中的状态(state)创建引用,不会为 actions 或非响应式属性创建引用。

3.性能优化: 使用 storeToRefs 可以避免不必要的组件重新渲染。它只会在被使用的属性发生变化时触发更新。

4.用法示例:

<script setup>
import { storeToRefs } from 'pinia'
import { useEventDashboardStore } from './stores/eventDashboard'

const store = useEventDashboardStore()

// 使用 storeToRefs 解构,保持响应性
const { shouldShowLoader, heading, sidebarLinks } = storeToRefs(store)

// 直接从 store 中获取 action
const { fetchEventDashboardItems } = store

// 不需要显式地返回任何东西,<script setup> 会自动暴露声明的变量和函数给模板
</script>

<template>
  <!-- 
  现在你可以直接在模板中使用这些响应式引用和 action
  例如:
  <div v-if="shouldShowLoader">Loading...</div>
  <h1>{{ heading }}</h1>
  <ul>
    <li v-for="link in sidebarLinks" :key="link.id">{{ link.text }}</li>
  </ul>
  <button @click="fetchEventDashboardItems">Fetch Items</button>
  -->
</template>

5.实时更新: 当 store 中的 shouldShowLoader、heading 或 sidebarLinks 发生变化时,使用这些变量的组件会自动更新,无需手动触发。

6.与普通解构的区别: 如果你直接解构 store 而不使用 storeToRefs,你会失去响应性:

// 错误用法,会失去响应性
const { shouldShowLoader, heading, sidebarLinks } = store

总的来说,storeToRefs 确实能保持实时更新,这是它的主要用途之一。它使得在组件中使用 Pinia store 的状态变得既方便又高效。