当前位置: 首页 > news >正文

建设网站的费用明细南京seo排名

建设网站的费用明细,南京seo排名,网站服务器ip查询,世界杯直播 现场免费直播Vue 项目中的状态优化一般都会用Pinia替代Vuex,Pinia 是 Vue 生态系统中的一个轻量级状态管理库,作为 Vuex 的替代品,它提供了更简洁的 API 和更好的性能。模块化管理:使用 Pinia 时,建议将状态拆分为多个 store 模块&…

Vue 项目中的状态优化一般都会用Pinia替代Vuex,Pinia 是 Vue 生态系统中的一个轻量级状态管理库,作为 Vuex 的替代品,它提供了更简洁的 API 和更好的性能。

  • 模块化管理:使用 Pinia 时,建议将状态拆分为多个 store 模块,以避免单一状态树过于庞大和复杂。这不仅有助于维护,还能提升性能。

  • 懒加载 Store:通过 Pinia 的 defineStore 动态创建 store,当某个 store 仅在特定页面或组件中需要时,可以延迟加载它。这样可以减少应用的初始加载时间。

  • State 持久化:如果某些状态需要在页面刷新后保持,可以使用 Pinia 的插件功能将状态持久化到 localStorage 或 sessionStorage,避免不必要的网络请求或重新计算。

  • 避免不必要的深度响应:Pinia 允许你明确哪些状态需要响应式,哪些不需要。对于不需要响应式的复杂对象,可以使用 shallowRef 或 shallowReactive 来减少响应式开销。

1. 安装 Pinia 与配置

npm install pinia

设置 Pinia:

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'const app = createApp(App)// 创建 Pinia 实例
const pinia = createPinia()app.use(pinia)
app.mount('#app')

 2. 创建模块化 Store

创建两个 Store 模块:userStore 和 productStore。其中 userStore 将使用状态持久化,productStore 将演示懒加载和避免不必要的深度响应。

stores/userStore.js:

// stores/userStore.js
import { defineStore } from 'pinia'
import { ref, computed, watch } from 'vue'export const useUserStore = defineStore('user', () => {// 初始化状态,如果 localStorage 中有存储,优先使用存储的状态const name = ref(localStorage.getItem('user-name') || 'John Doe')const age = ref(parseInt(localStorage.getItem('user-age')) || 25)const doubleAge = computed(() => age.value * 2)// 监听状态变化,并将其保存到 LocalStoragewatch(() => name.value,(newValue) => {localStorage.setItem('user-name', newValue)})watch(() => age.value,(newValue) => {localStorage.setItem('user-age', newValue.toString())})return {name,age,doubleAge,}
})

stores/productStore.js:

// stores/productStore.js
import { defineStore } from 'pinia'
import { shallowRef } from 'vue'export const useProductStore = defineStore('product', () => {// 使用 shallowRef 来避免不必要的深度响应const products = shallowRef([])const addProduct = (product) => {products.value.push(product)}return {products,addProduct,}
})

3. 懒加载 Store

productStore 仅在需要时加载,例如在某个特定组件中。

components/ProductList.vue:

<template><div><h2>Product List</h2><ul><li v-for="product in products" :key="product.id">{{ product.name }}</li></ul><button @click="addNewProduct">Add Product</button></div>
</template><script setup>
import { useProductStore } from '@ stores/productStore'
import { onMounted } from 'vue'// 懒加载 productStore
const productStore = useProductStore()
const products = productStore.productsconst addNewProduct = () => {productStore.addProduct({ id: Date.now(), name: `Product ${products.length + 1}` })
}onMounted(() => {console.log('ProductList component mounted.')
})
</script>

4. 在其他组件中使用 userStore

components/UserProfile.vue:

<template><div><h2>User Profile</h2><p>Name: {{ name }}</p><p>Age: {{ age }}</p><p>Double Age: {{ doubleAge }}</p></div>
</template><script setup>
import { useUserStore } from '@/store/userStore'// 使用 userStore,这个 Store 状态会被持久化
const userStore = useUserStore()const { name, age, doubleAge } = userStore
</script>

5. 手动实现状态持久化

我们在 userStore 中通过 localStorage 手动实现了状态持久化。如果你需要更加通用的状态持久化插件,可以创建一个简单的 Pinia 插件。

plugins/persistedState.js:

// plugins/persistedState.js
export function createPersistedStatePlugin(options = {}) {return ({ store }) => {const { key = store.$id } = options// 从 LocalStorage 初始化状态const fromStorage = localStorage.getItem(key)if (fromStorage) {store.$patch(JSON.parse(fromStorage))}// 订阅状态变化,并将其保存到 LocalStoragestore.$subscribe((mutation, state) => {localStorage.setItem(key, JSON.stringify(state))})}
}

注册插件

import { createPinia } from 'pinia'
import { createPersistedStatePlugin } from './plugins/persistedState'const pinia = createPinia()
pinia.use(createPersistedStatePlugin())const app = createApp(App)
app.use(pinia)
app.mount('#app')
http://www.dtcms.com/a/408116.html

相关文章:

  • International Journal of Robust and Nonlinear Control鲁棒和非线性控制RNC论文投稿流程
  • 网站网页制作公司淘宝客高佣金网站建设
  • 在线教育类网站模板南阳网站建设哪家好
  • 网站开发运营工程师待遇网站十大品牌
  • 用npp做网站网站悬浮广告代码
  • 计算机网路-路由聚合
  • 西安做搭建网站毕业设计题网站开发
  • 网站建设刂搜金手指下拉二五网页微信下载
  • Day71 基本情报技术者 单词表06 计算理论与性能
  • 做的网站浏览器提示不安全问题做推广网站多少钱
  • 国外虚拟物品交易网站网站建站的方式主要有哪几种
  • 营销型手机网站建设西安搬家公司收费情况一览表
  • 制作自己的网站 域名怎么弄北京做网站建设的公司有哪些
  • 深圳网站推广哪家好网站建设毕业设计指导老师意见
  • 推荐网站建设小企业来说 电子商务网站服务器的建设方案
  • 住房和城乡建设部网站倪虹帝国cms收费吗
  • 用ai怎么做网站龙华网站建设网站定制
  • 网站关键词搜索排名怎么做html网页模板代码下载
  • 学校局域网站建设在网站上有中英切换怎么做
  • 低空经济未来的发展预期和从事方向?国家对这方面的政策支持有哪些?
  • 建设银行成都市第九支行 网站seo发外链的网站
  • Swish激活函数:深度学习中的自适应门控激活机制
  • 网站seo如何做好优化网站制作工作室哪家比较好
  • 网站分析对比主页网址
  • 广东食品安全员食品销售考试难度怎么样
  • 一个做网页的网站如何微信做演讲视频网站
  • dw做网站设计营销的手段和方法
  • 怎么做空包网站seo网络推广专员
  • 免费代理服务器ip地址惠州seo外包费用
  • php 网站出现乱码杨浦区公司网站建设