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

做logo宣传语的网站百度竞价搜索

做logo宣传语的网站,百度竞价搜索,公司网站的服务费做哪个科目,昆山网站建设义搏一、综合案例 - 创建项目 本案例主要针对Vuex共享数据的练习以及父子组件数据的共享。 脚手架新建项目 (注意:勾选vuex) 版本说明: vue2 vue-router3 vuex3 vue3 vue-router4 vuex4/pinia vue create vue-cart-demo将原本src内容清空,替换…

一、综合案例 - 创建项目

本案例主要针对Vuex共享数据的练习以及父子组件数据的共享。

  1. 脚手架新建项目 (注意:勾选vuex)

    版本说明:

    vue2 vue-router3 vuex3

    vue3 vue-router4 vuex4/pinia

vue create vue-cart-demo
  1. 将原本src内容清空,替换成教学资料的《vuex-cart-准备代码》

需求:

  1. 发请求动态渲染购物车,数据存vuex (存cart模块, 将来还会有user模块,article模块…)
  2. 数字框可以修改数据
  3. 动态计算总价和总数量

二、综合案例-构建vuex-cart模块

  1. 新建 store/modules/cart.js
export default {namespaced: true,state () {return {list: []}},
}
  1. 挂载到 vuex 仓库上 store/index.js
import Vuex from 'vuex'
import Vue from 'vue'import cart from './modules/cart'Vue.use(Vuex)const store = new Vuex.Store({modules: {cart}
})export default store

三、综合案例-准备后端接口服务环境(了解)

  1. 安装全局工具 json-server (全局工具仅需要安装一次)
yarn global add json-server 或 npm i json-server  -g
  1. 代码根目录新建一个 db 目录
  2. 将资料 index.json 移入 db 目录
    {
    "cart": [{"id": 100001,"name": "低帮城市休闲户外鞋天然牛皮COOLMAX纤维","price": 128,"count": 1,"thumb": "https://yanxuan-item.nosdn.127.net/3a56a913e687dc2279473e325ea770a9.jpg"},{"id": 100002,"name": "网易味央黑猪猪肘330g*1袋","price": 39,"count": 14,"thumb": "https://yanxuan-item.nosdn.127.net/d0a56474a8443cf6abd5afc539aa2476.jpg"},{"id": 100003,"name": "KENROLL男女简洁多彩一片式室外拖","price": 128,"count": 2,"thumb": "https://yanxuan-item.nosdn.127.net/eb1556fcc59e2fd98d9b0bc201dd4409.jpg"},{"id": 100004,"name": "云音乐定制IN系列intar民谣木吉他","price": 589,"count": 1,"thumb": "https://yanxuan-item.nosdn.127.net/4d825431a3587edb63cb165166f8fc76.jpg"}
    ]
    }
    
  3. 进入 db 目录,执行命令,启动后端接口服务 (使用-
  4. -watch 参数 可以实时监听 json 文件的修改)
json-server  --watch  index.json

当服务启动后,可以访问http://localhost:3000/cart获取数据

四、综合案例-请求动态渲染数据

1.目标

请求获取数据存入 vuex, 映射渲染

在这里插入图片描述

  1. 安装 axios
yarn add axios
  1. 准备actions 和 mutations
import axios from 'axios'export default {namespaced: true,state () {return {list: []}},mutations: {updateList (state, payload) {state.list = payload}},actions: {async getList (ctx) {const res = await axios.get('http://localhost:3000/cart')ctx.commit('updateList', res.data)}}
}
  1. App.vue页面中调用 action, 获取数据
import { mapState } from 'vuex'export default {name: 'App',components: {CartHeader,CartFooter,CartItem},created () {this.$store.dispatch('cart/getList')},computed: {...mapState('cart', ['list'])}
}
  1. 动态渲染
<!-- 商品 Item 项组件 -->
<cart-item v-for="item in list" :key="item.id" :item="item"></cart-item>

cart-item.vue

<template><div class="goods-container"><!-- 左侧图片区域 --><div class="left"><img :src="item.thumb" class="avatar" alt=""></div><!-- 右侧商品区域 --><div class="right"><!-- 标题 --><div class="title">{{item.name}}</div><div class="info"><!-- 单价 --><span class="price">¥{{item.price}}</span><div class="btns"><!-- 按钮区域 --><button class="btn btn-light">-</button><span class="count">{{item.count}}</span><button class="btn btn-light">+</button></div></div></div></div>
</template><script>
export default {name: 'CartItem',props: {item: Object},methods: {}
}
</script>

五、综合案例-修改数量

在这里插入图片描述

  1. 注册点击事件
<!-- 按钮区域 -->
<button class="btn btn-light" @click="onBtnClick(-1)">-</button>
<span class="count">{{item.count}}</span>
<button class="btn btn-light" @click="onBtnClick(1)">+</button>
  1. 页面中dispatch action
onBtnClick (step) {const newCount = this.item.count + stepif (newCount < 1) return// 发送修改数量请求this.$store.dispatch('cart/updateCount', {id: this.item.id,count: newCount})
}
  1. 提供action函数
async updateCount (ctx, payload) {await axios.patch('http://localhost:3000/cart/' + payload.id, {count: payload.count})ctx.commit('updateCount', payload)
}
  1. 提供mutation处理函数
mutations: {...,updateCount (state, payload) {const goods = state.list.find((item) => item.id === payload.id)goods.count = payload.count}
},

六、综合案例-底部总价展示

  1. 提供getters
getters: {total(state) {return state.list.reduce((p, c) => p + c.count, 0);},totalPrice (state) {return state.list.reduce((p, c) => p + c.count * c.price, 0);},
},
  1. 动态渲染
<template><div class="footer-container"><!-- 中间的合计 --><div><span>共 {{total}} 件商品,合计:</span><span class="price">¥{{totalPrice}}</span></div><!-- 右侧结算按钮 --><button class="btn btn-success btn-settle">结算</button></div>
</template><script>
import { mapGetters } from 'vuex'
export default {name: 'CartFooter',computed: {...mapGetters('cart', ['total', 'totalPrice'])}
}
</script>
http://www.15wanjia.com/news/853.html

相关文章:

  • 英文都不懂 学网站建设维护难吗网络营销怎么做?
  • 医疗器械网站建设方案域名怎么查
  • 夏津网站建设费用semir是什么品牌
  • 终端平台网站建设seo前景
  • 深圳网页网站设计无锡网站排名公司
  • opencms做网站 谁品牌关键词优化
  • 广州番禺做网站百度seo怎么关闭
  • 网站做等级保护中国经济网人事
  • 专业网站建设模块维护如何制作网页设计
  • 网站设计报价是多少钱郑州seo学校
  • 给律师做推广的网站靠谱么百度官方下载安装
  • 做智能家居网站需要的参考文献怎么免费自己做推广
  • 什么推广方式能快速引流网站seo文章
  • wamp搭建多个网站网站备案流程
  • 效果好的免费网站建设深圳竞价托管
  • 浅谈网站页面框架设计制作网页的网站
  • 甘南网站建设近一周热点新闻
  • 怎样做网站内链关键词简谱
  • 手机网站页面尺寸大小b站推广网站2024年
  • 松原做网站app推广团队
  • 网站开发模块通过qq群可以进行友情链接交换
  • 网站自己做还是用程序关键词优化流程
  • 美女色情做视频网站有哪些seo全网推广
  • 做外贸 建网站要注意什么个人如何在百度做广告
  • 建设淘宝网站的意义网站有哪些平台
  • 创建企业网站的步骤宁波seo网站推广软件
  • p2vr做的网站上传互联网项目
  • 德阳网站建设单页关键词优化费用
  • 南山最专业的网站建设搜索引擎营销的简称
  • bec听力哪个网站做的好jsurl转码