Vue学习笔记4.10

Swiper

mounted:组件挂载完毕,正常说DOM已经全有了
为什么Swiper实例在mounted当中直接书写不可以,因为结构还没有完整(ajax请求的数据还没有回来,仓库中的数据还没有,所以结构还不完整)

最完美的解决方案,解决轮播图问题

使用watch+nextTick
watch:{
//监听bannerList数据的变化,以为这个数据从空数组变成有4条数据的数组
bannerList:{
handler(newVal, oldVal){
//如果执行handler方法,代表组件实例身上这个属性已经有了
//当前这个函数执行,只能保证bannerList数据已经有了,但是没办法保证v-for已经执行完成
//v-for执行完毕,才有结构
//在下次DOM更新循环之后,执行延迟回调,在修改数据之后,立即执行这个方法
this.nextTick(()=>{
new Swiper()…
})
}
}
}

开发Floor组件

切记:仓库当中的state的数据格式,不能瞎写,胡写,数据格式取决于服务器返回的数据格式

getFloorList这个action在哪里触发

是需要在Home路由组件当中触发的,不能在Floor组件内部触发action,因为我们需要v-for遍历组件

v-for也可以在自定义标签中使用

组件通信的方式有哪些?面试频率极高

props:用于父子组件通信
自定义事件:@on, @emit 可以实现子给父通信
全局事件总线: @bus 全能
pubsub-js: vue当中几乎不用 全能
插槽
vuex

把首页当中的轮播图封装为一个全局的组件

公用组件的结构和样式必须几乎是一样的
watch:{
list:{
//立即监听,不管数据有没有变化,上来就监听一次
immediate:true,
//为什么watch监听不到list,因为这个数据从来没有发生变化(数据是父亲给的,父亲给的时候就是一个对象,对象里面的数据没有发生变化)
handler(){
//只能监听到数据已经有了,但是v-for动态渲染结构还没办法确定,因此还需要使用nextTick
new Swiper…
}
}
}
切记:以后在开发项目的时候,如果看到某个组件在很多地方都有使用,就把它变成全局组件
注册一次,可以在任意地方使用,公用的组件|非路由组件放到components文件夹中

Search模块开发

1.先静态页面 + 静态组件拆分

2.发请求(API)

3.vuex(3连环)

vuex中的计算属性getters

项目中getters的主要作用是:简化仓库中的数据
可以把我们将来在组件当中需要用到的数据简化一下【将来组件在获取数据的时候就方便了】

getters:{
	goodsList(){
		return state.searchList.goodsList;
	}
}
computed:{
//mapGetters里面的写法:传递的数组,因为getters计算是没有划分模块的【home,search】
	...mapGetters(['goodsList'])
}
methods:{
// 向服务器发送请求获取search模块的数据(根据参数不同返回不同的数据进行展示)
	getData(){
		this.$store.dispatch('getSearchList',{})
	}
}
//当组件挂载完毕之前执行一次(先于mounted之前)
beforeMount(){
	//在发请求之前,把向服务器发的参数进行整理
	Object.assign(this.searchParams, this.$route.query, this.$route.params)
}
//组件挂载完毕执行一次【仅仅执行一次】
mounted(){
	//在发请求之前带给服务器参数【searchParams参数发生变化有数值带给服务器】
}

4.组件获取数据,动态展示数据

动态开发面包屑的分类名

编程式导航路由跳转【自己跳自己】

动态开发面包屑的关键字

当面包屑中的关键字清除之后,需要让兄弟组件中的关键字清除
涉及组件通信:
props: 父子
自定义事件: 子父
vuex:存储数据(万能)
插槽:父子
$bus: 万能

//在跟组件里面, 配置全局事件总线$bus
beforeCreate(){
	Vue.prototype.$bus = this;
}
 //在事件组件中
this.$bus.$emit('clear');
//在显示组件中
this.$bus.$on('clear', ()=>{ this.keywords = ''})
if(this.$route.params){
	this.$router.push("name":"search", params:this.$route.params)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值