vue大杂烩

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> -->

猜你喜欢

转载自blog.csdn.net/qq_45271323/article/details/105657807