vue 获取请求的头部信息_Vue实战-头部模块编写(5)

本文介绍如何在Vue中通过axios获取请求头部信息,并应用到头部模块的制作中。首先分析并创建静态页面,接着处理数据,利用props进行父子组件通信。讨论了data、prop、computed和method的区别,以及如何使用transition实现动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

04e3f6f429f88f76595c741f2339b0ca.png

通过上篇我们了解到了vue可以通过axios发送前端请求。

我们知道的在发送请求可以在creted()钩子内,也可以在mounted()钩子内。

本篇我们通过头部模块的编写,将请求到的数据渲染到模块内。

当然我们先要准备静态页面:

01.分析制作静态页面

31a5c04ea0e6b51da58cb32cb7dedddf.png

如图所示,我们可以将整个一个头部模块分为4个部分:

· 顶部通栏:返回,搜索,拼单,等;

· 主题内容:餐厅名字

· 公告:新用户;

· 背景图片。

然后我们依据当前这三块内容进行布局

<div class="header">
<div class="top-wrapper"></div>
<div class="content-wrapper"></div>
<div class="bulletin-wrapper"></div>
<div class="bg-wrapper"></div>
</div>

结构定好了,我们需要注意:

1.写css,添加背景图片,等通用的需要我们放在static下,比如初始化css文件。

2.头部组件需要用到的图片直接放在头部组件的文件夹内,如以后需要更改,操作,是很方便管理的。

3.bg-wrapper用绝对定位进行背景图片的设置。

我们将静态头部模块完成后需要为组件传入数据,比如商家信息,公告,主题内容,通过后端获取。

如下,我们在app.vue中进行数据请求:

<script>
// 1、导入头部模块
import Myheader from 'components/Header/Header';
​
export default {
name: 'app',
components: { // 2、注册
Myheader
},
data() {
return {
// header组件需要的信息(商家信息)
poiInfo: {},
 commentNum: 0,
 
}
},
created() { // 发起异步请求,获取数据
var that = this;
// 通过axios发起get请求
this.$axios.get('/api/goods')
.then(function(response) { // 获取到数据
var dataSource = response.data;
if(dataSource.code == 0){
that.poiInfo = dataSource.data.poi_info;
}
})
.catch(function(error) { // 出错处理
console.log(error);
});

}
}
</script>

我们通过axios请求到了来自后端的商家信息。

02.处理数据

1.通过props进行父子组件通信

父组件App.vue下:

进行数据绑定。

<Myheader :poiInfo='poiInfo'></Myheader>

头部模块组件内通过props接收数据:

export default {
props: {
  poiInfo: {
    type: Object,
    default: ""
  }
}
};

ec4ee804cdba67ba446800a87e04292d.png

完善这些后,我们在来扩充一个功能,就是点击活动的时候,会弹出活动详情页:

c2fe345505f7750e29c075c30d56a010.png
<transition name="bulletin-detail"></transition>

我们用transition来做简单的页面展示动画。

2.防止数组越界

针对于公告内容:

<div class="bulletin-wrapper">
<img class="icon" v-if="poiInfo.discounts2" :src="poiInfo.discounts2[0].icon_url" />
​
<span class="text" v-if="poiInfo.discounts2">{{poiInfo.discounts2[0].info}}</span>
​
<div class="detail" v-if="poiInfo.discounts2" @click="showBulletin">
{{poiInfo.discounts2.length}}个活动
<span class="icon-keyboard_arrow_right"></span>
</div>
</div>

使用v-if控制数据与模板的渲染否。

v-if="poiInfo.discounts2"

到这里今天的头部模块编写,以及数据的渲染就结束了,就以上提到的比较重要,可能需要详细了解的知识点,都在下方罗列好了。

03.data, prop, computed, method 的区别

370162ca702ea37aa3a5ffc60285220f.png

computed的应用。

CSS拼接

04.动画

b46badb3907f6e9c9a03b086492683e5.gif

https://cn.vuejs.org/v2/api/#transition

定义

进入
.xxx-enter 过渡开始的状态
.xxx-enter-to 过渡结束的状态
.xxx-enter-active 过渡时间、延迟、曲线函数
离开
.xxx-leave 过渡开始的状态
.xxx-leave-to 过渡结束的状态
.xxx-leave-active 过渡时间、延迟、曲线函数
*/
​
.bulletin-detail-enter-active,
.bulletin-detail-leave-active {
transition: 2s all;
}

.bulletin-detail-enter,
.bulletin-detail-leave-to {
 opacity: 0;
}

.bulletin-detail-enter-to,
.bulletin-detail-leave {
 opacity: 1;
}

调用

<transition name="bulletin-detail"></transition>

vue项目的头部模块编写到此就结束了,下篇我们对评价模块进行设计与实践,不见不散。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值