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

免费网站源码大全网站站外优化

免费网站源码大全,网站站外优化,泉州做网站优化价格,升级访问页面跳转目录 一、实例 二、需求 三. 代码解析 shop.vue shop.ts 四、持久化插件 插件介绍 持久化实现思路 一、实例 二、需求 单选全选功能,并且可以互相联动 小计功能 总计功能 商品加减,数量为零时不能在减 三. 代码解析 shop.vue 1.获取shop模块实…

目录

一、实例

二、需求

三. 代码解析

shop.vue 

shop.ts

四、持久化插件

插件介绍

持久化实现思路


一、实例

二、需求

  •  单选全选功能,并且可以互相联动
  •  小计功能
  •  总计功能
  •  商品加减,数量为零时不能在减

三. 代码解析

shop.vue 

1.获取shop模块实例

2.updateNum实现商品加减函数

3.allSelectChange 实现全选函数

4.singChange实现单选函数

<template><div>我是购物车</div><div>全选 <input type="checkbox" v-model="ShopStore.isAllSelect" @change="allSelectChange"></div> <div v-for="(item,index) in ShopStore.goods" :key="index"><input @change="singChange" v-model="item.select" type="checkbox" name="" id="">商品名:{{ item.name }}  ----商品价格:{{ item.price }}  ----<button @click="updateNum(index,1)">+</button>{{ item.num||1 }}<button @click="updateNum(index,-1)" >-</button>小记 {{ item.price*(item.num||1) }}</div><div>总价:{{ ShopStore.total }}</div>
</template>
<script setup lang="ts">
import { userShopStore } from "./store/shop";
const ShopStore = userShopStore()
const updateNum = (index: number, num: number) => {ShopStore.updateNum(index,num)
}
const allSelectChange = () => {ShopStore.allSelectChange()
}
const singChange = () => {ShopStore.singChange()
}
</script>

shop.ts

导入 defineStore函数  interface 定义接口类  导出模块实例

state存放数据  goods商品数组实现接口 isAllSelect全选状态

getters 计算属性。通过filter过滤出选择项 reduce累加计算总计

actions 存放方法

        updateNum 加减操作 初始化num 进行数值操作

        allSelectChange 每次点击全选,都需要同步单选状态 控制全选

        singChange:判断全选状态

import { defineStore } from "pinia";interface IGoods {name: string,price: number,num?: number,select?: boolean
}
export const userShopStore = defineStore('shop', {state() {return {goods: [{name: '羊肉串',price: 20},{name: '猪肉串',price: 15},{name: '鸡翅',price: 10}] as IGoods[],isAllSelect: false}},getters: {total(): number {return this.goods.filter(item => item.select).reduce((total, item) => total += (item.num || 1) * item.price, 0)}},actions: {updateNum(index: number, num: number) {//初始化numthis.goods[index].num = this.goods[index].num || 1//进行数值操作this.goods[index].num! += num},allSelectChange() {//每次点击全选,都需要同步单选状态this.goods.forEach((item) => {item.select = this.isAllSelect})},singChange() {this.isAllSelect = this.goods.every(item => item.select)}}
})

四、持久化插件

插件介绍

Pinia 插件是一个函数,可以选择返回要添加到 store 的属性。 它需要一个可选参数,一个 context

export function myPiniaPlugin(context) {context.pinia // 使用 `createPinia()` 创建的 piniacontext.app // 使用 `createApp()` 创建的当前应用程序(仅限 Vue 3)context.store // 插件正在扩充的 storecontext.options // 定义存储的选项对象传递给`defineStore()`// ...
}

持久化实现思路

监听state的变化,把每次变化的结果放到localStorage里面。初始化的时候回显数据

import { PiniaPluginContext } from "pinia";export function persistedstate(context: PiniaPluginContext) {// 初始化回显数据const shop = JSON.parse(localStorage.getItem(context.store.$id) || "{}");context.store.$patch(shop);// 订阅每次state的变化context.store.$subscribe((_mutation, state) => {localStorage.setItem(_mutation.storeId, JSON.stringify(state));},{detached: true,});
}

http://www.yayakq.cn/news/958311/

相关文章:

  • 大型服装网站建设详情页模板套用
  • 网站规划应遵循的原则有哪些灰色行业推广引流
  • h5网站建设方案php 网站建设 教学
  • 商城网站制作多少钱广州seo推荐
  • 朝阳网站建设 国展电脑网站制作
  • 网站设计模板简约东莞市建设安监监督网站首页
  • 网站seo思路网站服务器要求
  • 上海app定制网站内链如何做优化
  • 怎么建设微信网站网站html5自适应屏幕
  • 建站网络提高网站流量原则
  • ppt做视频模板下载网站有哪些门户网站模板源码
  • 南沙门户网站建设杭州建设网站官网
  • 网站建设好公司哪家好网站备案怎么做
  • 秦皇岛陵县网站建设上海企业网站
  • 怎么编写一个网站asp网站用什么软件
  • html5 手机端网站wordpress手机重定向
  • 郑州网站运营实力乐云seo国际域名注册流程
  • 网站名称 备案营销型企业网站有哪些平台
  • 食品贸易网站建设案例wordpress父文章显示不全
  • 正定城乡建设网站网站代码用什么打开
  • 网站的构成要素媒体资源网官网
  • 网站资料库建设的功能需求wordpress 获取当前分类id
  • vs2015网站开发基础样式wordpress调用随机文章代码
  • 美丽乡村建设规划文本网站企业网站推广的形式有哪些
  • 新闻静态网站模板下载购物网站开发语言
  • 如何做淘宝店网站网站开发商怎么关闭图片显示
  • 网站做icp备案有哪些好处安溪县住房和城乡规划建设局网站
  • 阜新网站设计成都代运营公司
  • 互联网网站建设挣钱吗行业门户网站大全
  • 网站 技术方案公众号小程序怎么做