mall开发第二天

本文探讨了Vue中数据结构的组织,如何在组件生命周期中封装数据请求,以及组件间的数据传递技巧。通过设置props传递路径实现组件跳转,利用computed属性和条件渲染控制导航栏的激活状态。同时,讲解了局部刷新的实现方式,即子组件通过事件向父组件传递信息。最后,介绍了使用v-for遍历数据动态创建组件的方法。
摘要由CSDN通过智能技术生成

1.数据结构的组织

在这里插入图片描述
这里的goods是一个数组对象,在拿其中的某一项的时候,可以像取数组元素一样,直接goods[‘pop’]

2.对数据请求的又一次封装

这里的意思是在组件刚创建完成就去拿数据,所以在created里面写请求,
在这里插入图片描述
一般created函数中只包含逻辑,而不包含具体的操作,可以把操作放在methods中,这里就是封装成一个函数,然后直接在created中调用,封装成一个函数的好处是,比如说我想拿goods对象里面‘pop’、‘new’、‘sell’中的值,这个时候就不用重复的调用getHoneGoods,而是给它传递一个参数,这样就把功能封装起来

3.组件之间数据传递的过程

1.实现点击组件跳转到不同的页面
基础思想是:使用代码跳转 this.$router.push('path')
所以问题就是组件怎么知道path,就想到设置一个path属性,从组件的外部传过来,用path接收

props: {
	path: String
}

2.实现对于导航栏点击后字体的颜色还有切换成激活图像
切换激活图片就是使用v-if和else,用一个状态变量来判断是否是激活状态,比如isActive,isActive是一个布尔值,一般都是一个比较长的布尔表达式,这个时候一般是写在computed里面
而布尔表达式:一般就是===,规律:所有的组件都要有同一种标识,然后维持一个current标识,保证在点击一个组件之后这个current标识和这个组件的标识保持一致,之后isActive就是判断this.标识 === currentIndex

这就要求在最开始的时候并不能把字体的颜色写死,而是动态绑定一个变量,如activeActive
也就是这样
--------------------:style = 'activeStyle'这里activeStyle要传的是一个对象
通过上面的isAvtive,这个时候一般想到的是if(){},但是这里可以选择使用三目运算符?:
也就是isActive? {color: activeColor } ,{}

注:这里所有的组件要有的标识,如果没有的话,就需要我们自己给每一个组件都设置一个属性,比如上面的path,而有些是隐藏的,比如使用v-for遍历创建的组件,每一个组件都可以拿到一个index属性,之后就是维持一个currentIndex,之后就可以判断点击的是哪一个组件了,再通过是否是激活状态,设置不同的值。

3.实现局部的刷新:
由于数据都是从父组件哪里拿过来的,这就要求子组件需要传递一个信息给父组件来说明现在点击的是哪一个组件,我们就可以在子组件点击的事件里面,把每一个组件的标识给传出去,之后父组件根据传的值,使用swich来表达式来表达

swich() {
	case 0:
		statement;
		break
	case 1:
		......
}

4.实现组件的遍历
使用v-for,根据拿到的数据数组,来判断创建多少个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值