el-tabs标签延迟渲染,解决父子组件异步数据传递问题

      用el-tabs很多次了,今天才注意到tab-pane上提供了一个lazy属性,对于解决父子组件数据传递问题很有帮助。

      举个例子,下面的父组件中调用了子组件child,并传递了一组数据,但这组数据是由接口请求返回的。



    
        
    
    配置

      子组件在mounted中使用由父组件传递的asyncData,由于在mounted时,父组件中的接口还没有返回所需的数据,所以asyncData的取值为undefined,导致子组件中的asyncArray被赋值了一个空数组。即使后面接口返回了所需的数据,子组件中可以取得asyncData的正常值,但由于asyncArray被赋值了空数组,与asyncData指向的不是同一个地址,所以asyncArray的值依然是空数组。

//子组件
export default{
    data(){
        return{
            asyncArray:[]
        }
    },
    props:{
        asyncData : Array
    },
    mounted(){
        this.asyncArray = this.asyncData || []
    }
}

      为了解决上面的问题,在文档中发现了tab-pane的lazy属性:

       在默认值为false的情况下,标签页里的内容与标签是同时渲染的,未展开的标签页是display:none;当更改为true以后,未展开的标签并不会渲染,而是等切换之后才会渲染,这样就有足够的时间等接口返回数据了。

你可能感兴趣的:(Vue)