NextTick
nextTick
可以让我们在下次 DOM 更新循环结束之后执行延迟回调,用于获得更新后的DOM
问题解决:swiper插件从后台获取数据没问题,css代码啥的也没有问题,但是图片没动,怎么解决?
主要原因是swiper提前初始化了,但是数据还没有完全出来。
this.$nextTick() 主要作用是等数据改变引发dom重新渲染完成之后才会执行
<div class="swiper-container index-banner">
<div class="swiper-wrapper">
<div class="swiper-slide"
v-for="item in banners"
:key="item.id"
>
<img :src="getImages(item.images.small)" alt="">
</div>
</div>
</div>
getBanners(){
axios.get("/db/v2/movie/in_theaters",{
params:{
count:5
}
}).then(res=>{
this.banners = res.data.subjects;
this.$nextTick(()=>{
new Swiper(".swiper-container",{
loop:true
})
});
})
}
observer:true,
observeParents:true//修改swiper子元素的话,会自动帮助我们初始化swiper
**如果想要从后台请求图片放上去 new Swiper要写在网络请求成功的函数里面,否则不会出来数据**。
vue 中 ajax 请求代码应该写在组件的 methods 中还是
如果请求来的数据不是要被其他组件公用,仅仅在请求的组件内使用,就不需要放入 vuex 的 state 里
如果被其他地方复用,请将请求放入 action 里,方便复用,并包装成 promise 返回
keep-alive的作用是什么
在vue项目中,如果需要点击列表页跳转到详情页,返回列表页时,如果不对列表页进行缓存,那么返回来的时候会回到初始状态,这时候就可以使用keep-alive ,keep-alive 是vue中的一个内置组件 ,可以使 被包含的组件保留状态,或避免被重新渲染,keep-alive的用法也很简单
<keep-alive>
<router-view>
<!-- 所有路径匹配到的视图组件都会被缓存! -->
</router-view>
</keep-alive>
但是需要与activated和deactivated配合使用
当在这些组件之间切换的时候,想保持这些组件的状态,以避免反复渲染导致的性能问题
说白了,可以让不活动的组件“活着”
a-b b-a a页面不会再次进行数据请求,直接从缓存里面获取。减少性能消耗
提供了两个属性:允许组件有条件的缓存
include
exclude
原理:
在created的时候,将需要缓存的虚拟dom节点放到cache中,在render的时候
根据name再进行取出。
<!-- <keep-alive include="indexCom">
<router-view/>
</keep-alive> -->