【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 ...
随机推荐
- javascript原型,继承
//普通对象 //函数对象(有原型 prototy 的属性) //原型的应用 继承 function Amial(){ this.type = '小于' } function cat(name){ t ...
- doy 19 进程管理
1.进程管理 1.什么是进程,什么是线程 1.什么是程序 一般情况下,代码,安装包等全部都是应用程序. 2.什么是进程 应用程序运行起来的能够提供某种服务的实例. 3.什么是线程 进程中处理具体事务 ...
- cadence-ADE反相器仿真
Cadence-ADE仿真 连接电路 鼠标移至schematic绘制区域,单击放置inv i键继续添加gnd, vdc(3.3V), vpulse(0-3.3V,Period 1us,Pulse wi ...
- BOM的概述及方法
BOM的概述: bom 称为浏览器对象模型(bowser object model),也就意味他可以获取浏览器上的所有内容以及相关的操作.BOM缺乏规范的,存在共有对象来解决这个问题,但是共有对象也存 ...
- Collectors类的静态工厂方法-《Java 8实战》笔记
- python 猜数字
方法一 import randomif __name__ == '__main__': yourname = input("你好! 你的名字是什么?\n"); prin ...
- Apache Ranger系列七:Hive 和 Spark 执行过程中的文件路径配置
背景:在使用Ranger鉴权的过程中,要求必须开启impersonation功能(即执行用户与提交用户保持一致,而不是统一代理的hive/spark).但是在执行的过程中,会需要在hdfs存储临时的文 ...
- Postman设置Cookie参数为全局变量-环境变量设置IP参数
前提:在遇到多接口测试时,容易出现限制登录的情况 可以使用两种情况: 1.在调用其他接口前,先调用登录接口:这个方法在一般情况下可以,但是对于有些环境,比如像小程序登录时token(或cookie)是 ...
- StoneDB 子查询优化
StoneDB 子查询优化 摘要: 说明如何优化 exists 的 join 查询优化器的处理 核心函数: TwoDimensionalJoiner::ChooseJoinAlgorithm Join ...
- Vue中 ref、$refs区别与使用
定义2个组件: 子组件ChildrenSubRef.vue: 1 <template> 2 <div> 3 4 </div> 5 </template> ...