【Vue项目】尚品汇(四)Search组件开发
Search模块开发
分析:1)编写静态页面
2)编写api
3)编写vuex三大件
4)组件获取仓库数据,并进行动态展示
1 SearchSelector
1 编写api
export const reqGetSearchInfo = (params={}) => {
return requests({
url: '/list',
method: 'post',
data: params
})
}
2 编写Vuex三大件
import {reqGetSearchInfo} from "@/api";
const actions = {
async getSearchInfo(context, params) {
let result = await reqGetSearchInfo(params)
if(result.code == 200) {
context.commit('GETSEARCHINFO', result.data);
}
}
}
const mutations = {
GETSEARCHINFO(state, searchInfoList) {
state.searchInfoList = searchInfoList
}
}
const getters = {
}
const state = {
searchInfoList: {}
}
// 将模块仓库内容对外暴露
export default {
state,
actions,
mutations,
getters
}
注意state仓库的数据是对象{}还是数组[]是由返回的数据决定的。
3 组件获取仓库数据,并进行动态展示
mounted() {
this.$store.dispatch('getSearchInfo');
},
computed: {
...mapState({
SearchInfoList: (state) => {
return state.search.searchInfoList
}
})
}
4 监听路由变化再次发送请求数据
之前通过三级联动的query参数整合了搜索框中的params参数,当点击三级联动的时候能够带上搜索框的参数,当点击搜索框的时候能带上三级联动的参数。但是在进入搜索页面之后并不能继续进行发出请求,这是因为我们只在mounted里面进行了整理参数、发出请求(实际是在vuex的action中)。
因此我们可以通过监听路由的变化,当路由变化的时候重新进行参数整理和请求发送即可。
<script>
import SearchSelector from './SearchSelector/SearchSelector'
import {mapState} from "vuex";
export default {
name: 'Search',
components: {
SearchSelector
},
data() {
return {
searchParams: {
}
}
},
methods: {
getData() {
this.$store.dispatch('getSearchInfo', this.searchParams);
}
},
mounted() {
this.getData();
},
beforeMount() {
Object.assign(this.searchParams, this.$route.query, this.$route.params)
},
computed: {
...mapState({
SearchInfoList: (state) => {
return state.search.searchInfoList
}
})
},
watch: {
$route() {
console.log("123")
Object.assign(this.searchParams, this.$route.query, this.$route.params)
this.getData()
this.searchParams = {}
}
}
}
</script>
各种请求接口参数一定要注意参照接口文档。。。
对路由的监视一定要加上 this.searchParams = {},防止在重复点击三级联动的时候会携带上次的三级分类的剩余信息
从后面回来的,这里还真不能直接这么写,因为后面面包屑会用到categoryName,否则再次点击三级联动会导致面包屑不显示。应该改为:
$route() {
Object.assign(this.searchParams, this.$route.query, this.$route.params)
console.log(this.searchParams)
this.getData()
this.searchParams.category1Id = ''
this.searchParams.category2Id = ''
this.searchParams.category3Id = ''
}
2 面包屑
3 平台售卖属性
4 商品排序
5 分页器
分页器需要的参数:
当前的页码:pageNo
每页的数据:pageSize
分页器的总页数:total
分页器连续页码个数:continue
【Vue项目】尚品汇(四)Search组件开发的更多相关文章
- vue大型电商项目尚品汇(前台篇)day01
学完vue2还是决定先做一个比较经典,也比较大的项目来练练手好一点,vue3的知识不用那么着急,先把vue2用熟练了,vue3随时都能学. 这个项目确实很经典包含了登录注册.购物车电商网站该有的都有, ...
- vue大型电商项目尚品汇(前台篇)day04
这几天一直都在做项目,只是没有上传上来,即将把前台项目完结了.现在开始更新整个前台的部分 一.面包屑处理 1.分类操作 点击三级联动进入搜索产生面包屑,直接取参数中的name即可 点击x怎么干掉这个面 ...
- vue大型电商项目尚品汇(前台篇)day02
现在正式回归,开始好好做项目了,正好这一个项目也开始慢慢的开始起色了,前面的准备工作都做的差不多了. 而且我现在也开始慢慢了解到了一些项目才开始需要的一些什么东西了,vuex.router这些都是必备 ...
- vue大型电商项目尚品汇(前台篇)day05
紧急更新第二弹,然后就剩下最后一弹,也就是整个前台的项目 一.购物车 1.加入购物车(新知识点) 加入到购物车是需要接口操作的,因为我们需要将用户的加入到购物车的保存到服务器数据库,你的账号后面才会在 ...
- vue大型电商项目尚品汇(前台篇)day05终结篇
前台部分到此结束,一路走来还挺怀念,今天主要是对整个项目的完成做一个最后的收尾工作,对于功能上的需求没有什么了,主要就是项目上线的一些注意事项. 一.个人中心二级路由 当我们点击查看订单应该跳转到个人 ...
- vue大型电商项目尚品汇(后台终结篇)day06 重磅!!!
自此整个项目前后台,全部搭建完毕. 今天是最后一天,内容很多,而且也比较常用,一个图标类数据可视化,一个后台的权限管理,都是很经典的类型. 一.数据可视化 1.简介 专门的一门学科,有专门研究这个的岗 ...
- vue大型电商项目尚品汇(后台篇)day01
开始我们后台篇的内容,前面处理了一些事情,去学校完成授位仪式,由校长授位合影,青春不留遗憾,然后还换了一个电脑,征战了四年的神船终于退役了,各种各样的小毛病是真的烦人. 现在正式开始后台篇的内容,做了 ...
- vue大型电商项目尚品汇(后台篇)day03
今天把平台属性的管理基本完成了,后台管理做到现在基本也开始熟悉,确实就是对ElementUI的一个熟练程度. 一.平台属性管理 1.动态展示数据 先把接口弄好,应该在第三级标题选择后进行发请求 静态页 ...
- vue大型电商项目尚品汇(后台篇)day05
今天继续是对后台管理部分的一个操作,但是快要结束了,今天结束,明天会进入一个从Vue以来,另外一个名声显著的东西了,一只耳闻从未见识,而且十分的炫酷 他就是------数据可视化Echarts,迫不及 ...
- vue大型电商项目尚品汇(后台篇)day02
这几天更新有点小慢,逐渐开始回归状态了.尽快把这个后台做完,要开始vue3了 3.添加修改品牌 用到组件 Dialog 对话框,其中visible.sync这个配置是修改他的显示隐藏的,label-w ...
随机推荐
- C语言中~与!的区别
! 是逻辑非or否定 凡是a的值不为0的,!a 就等于0: 如果a的值为0,则 !a 的值为1 而~这个是 按位取反 比如 int a=2 ; 用二进制表示为00 00 00 10; 则 !a ...
- 切片slice
1.切片 切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用类型的机制 切片的使用和数组类似,如遍历切片,访问切片的元素和求切片长度len(slice)都一样. 切片的长度是可以变化的, ...
- 关于一维数组传入函数的使用 //西电oj214题字符统计
#include<stdio.h> void count(char str[],int num[]){//形参用[],传递数组首地址后可以直接正常用数组str[i] int i; for( ...
- C语言基础题 22年5月
(十六进制 %x 20.0f是%f long 是%ld unsigned int %#o ) 编程题: 整数浮点数的上溢下溢 strcpy函数代码 int search(char *s, ch ...
- 数据库结构差异比较-SqlServer
/****** Object: StoredProcedure [dbo].[p_comparestructure_2005] Script Date: 2022/10/8 10:00:20 **** ...
- 通过Dnsmasq自建干净的DNS服务
不晓得为撒,用网上的一些公共DNS服务的时候,总是莫名其妙的有些网站无法解析,有时候114能解析,阿里DNS不行或者腾讯DNS不行,导致总是来回切换DNS,很是烦心. 于是就想着自己搭建一个DNS服务 ...
- 记一下Linux环境SpringBoot 用OpenOffice Word转PDF
环境 Windows或者Linux 首先安装 deb方式 tar -xvzf Apache_OpenOffice_XXXX_Linux_x86-64_install-deb_zh-CN.tar.gz ...
- kettle连接oracle
连接oracle 10g 驱动classes12.jar 配置一下三项即可: 1.数据库名称:ip:端口/实例 2.用户名 3.密码
- swagger 增强UI --knife4j
knife4j 文档: https://gitee.com/xiaoym/knife4j (1)简介 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是sw ...
- Scanner进阶使用
Scanner 进阶使用 package com.andy.base.scanner; import java.util.Scanner; public class Demo04 { public s ...