对于那些不需要路由的内部组件,希望在切换时加入轮播转场效果。效果如下:我们可以引入一个轮播组件,但是有一个问题,通常轮播组件会在切换前渲染所有的幻灯片,这会导致所有资源触发加载。这可能不是我们所期望的。毕竟幻灯片多的话,需要一次性加载的图片等资源太多了。向上。所以我们可以简单的手动写一个来满足需求。现在一步步实现这个功能,先写一个实现基本切换的demo。这样一个webpack+vue项目就搭建好了,进入slide-demo目录,查看src/App.vue。该文件由初始化工具提供,是整个页面的组成部分。还有一个src/components目录,就是放置子组件的目录。在该目录下新建三个组件:task-1.vue、task-2.vue、task-3.vue,然后在App.vue中导入,如下App.vue所示:我们的数据格式题是这样的:[{index:1,type:1,content:''},{index:2,type:1,content:''},{index:3,type:2,content:''},{index:4,type:3,content:''}]是一个数组,数组中的每一个元素代表每一个问题,每一个问题都有一个类型,比如选择题、填空题、判断题,分别对应上面的task-1、task-2、task-3。我们使用一个currentIndex变量来表示我们当前在哪个问题,初始化为0,如下代码所示(添加到App.vue中):data(){return{currentIndex:0};},created(){//请求问题数据this.questions=[{index:1,type:1,question:''},/*...*/];},通过改变currentIndex的值,从而切换到下一个问题,就是下一个组件,如何实现这种切换效果呢?可以使用Vue自定义的全局组件组件,结合其is属性,达到动态改变组件的目的,如下代码所示:
