若依删除从详情页面返回删除详情页面tab显示列表页tab

6 篇文章 0 订阅
本文介绍了如何在Vue应用中使用Vuex库来管理用户的浏览历史,通过添加mutations和actions实现添加、删除操作,并在全局方法中调用。通过实例展示了如何在列表页保存上一页面路由,在详情页返回上一个浏览记录。
摘要由CSDN通过智能技术生成

src\store\modules\tagsView.js

  	1:添加store  
  	      lastView: []
  	2:添加mutations
  	  SET_LAST_VIEW: (state, view) => {
  	    if(state.lastView.length == 0 ){
  	      state.lastView.push(view)
  	    }else if ( view.path != state.lastView[state.lastView.length - 1].path) {
  	      state.lastView.push(view)
  	    }
  	  },
  	  DEL_LAST_VIEW: (state) => {
  	    state.lastView.pop()
  	  }
   3:添加actions
      delLastView({ commit, state }, router) {
  	    if (state.lastView.length > 0) {
  	      router.push({
  	        path: state.lastView[state.lastView.length - 1].path
  	      })
  	      commit('DEL_LAST_VIEW')
  	    }
  	  }

src\utils\ruoyi.js

  1:添加全局方法
 		// 删除当前tab回到上一个tab
 	  export function goLastTab(store, router) {
 			if(!store || !router){
 				console.log('参数不正确,必须将$store和$router传进来')
 				return 
 			}
 			// 删除当前view
 			store.dispatch("tagsView/delVisitedView", router.currentRoute)
 			// 删除上一个view并将其中lastView中删除
 			store.dispatch("tagsView/delLastView", router)
 		}
 		
 		// 将当前tab存在缓存中,goLastTab的时候使用
 	  export function addLastTab(store,from){
 			if(!store || !from){
 				console.log('参数不正确,必须将$store和from传进来')
 				return 
 			}
 			store.commit('tagsView/SET_LAST_VIEW', from)
 		
 		} 

src\main.js

		1:在main中引入全局方法
				import { addLastTab, goLastTab } from "@/utils/ruoyi";
		2:挂载全局方法
		        Vue.prototype.addLastTab = addLastTab
 			Vue.prototype.goLastTab = goLastTab 

页面调用

 		1:列表页
   		     beforeRouteLeave (to, from, next) {
 			    // 设置上一次的菜单以便待会跳转回来
 			   this.addLastTab(this.$store,from)
 			    next()
 			  }, 
 		2:详情页
 		      this.goLastTab( this.$store,this.$router)
### 回答1: 你可以在微信小程序中使用vant weapp的tab组件来实现页面之间的切换。如果你想销毁页面,可以在onHide生命周期函数中调用wx.nextTick()方法,在回调函数中使用wx.redirectTo()方法跳转到需要跳转的页面。这样,当前页面就会被销毁并跳转到新的页面。如果你不想销毁页面,你可以使用wx.navigateTo()方法进行页面跳转,这样当前页面就会被保留在栈中,直到用户点击返回按钮。 ### 回答2: 在微信小程序中使用vant-weapp库来实现tab切换时销毁页面,可以通过监听页面生命周期函数和使用vant-weapp提供的一些方法来实现。 首先,在app.js中的onLaunch函数内注册vant组件,并在config中添加需要使用的组件,例如: ```javascript App({ onLaunch: function () { // 注册vant组件 require('./vant-weapp/dist/index.js') // 添加需要使用的组件 const { tab, tabs } = require('./vant-weapp/dist/tab/index.js') this.globalData = { tab, tabs } } }) ``` 然后,在需要使用tab切换的页面的.js文件中,使用onShow和onHide监听页面显示和隐藏事件,在隐藏事件中销毁页面,例如: ```javascript Page({ onShow: function () { // 页面显示时执行 }, onHide: function () { // 页面隐藏时执行 wx.removeStorageSync('页面的缓存数据') // 可根据需要是否删除页面的缓存数据 } }) ``` 最后,在对应页面的.wxml文件中,使用vant-weapp提供的tab组件和tabs组件来实现tab切换界面,例如: ```html <view> <tabs> <tab title="tab1" key="1"> <!-- tab1内容 --> </tab> <tab title="tab2" key="2"> <!-- tab2内容 --> </tab> </tabs> </view> ``` 通过以上步骤,当切换tab时,页面会触发onHide事件执行,可以在该事件中进行页面的销毁操作。如果需要保留部分页面数据,可以使用缓存来存储数据,在显示页面时进行缓存数据的读取。 ### 回答3: 在微信小程序中使用vant weapp组件库的tab切换时,一般情况下是不会主动销毁页面的。但可以通过一些特定的操作来模拟销毁页面的效果。 一种方法是,在tab切换时,通过监听页面切换事件,在切换到其他tab时,将当前页面的数据清空,并调用页面的onUnload方法来释放资源。具体实现如下: 1. 在页面的onShow方法中,监听vant tab组件的change事件,代码如下: ``` onShow: function() { const tab = this.selectComponent('#tab'); tab.on('change', this.handleTabChange); }, ``` 2. 在handleTabChange方法中,判断当前选中的tab,并根据需要销毁页面或释放资源,代码如下: ``` handleTabChange(event) { const { index } = event.detail; if (index === /* 需要销毁的tab索引 */) { // 销毁当前页面 const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; currentPage.setData({ /* 清空页面数据 */ }); currentPage.onUnload(); } else { // 释放当前页面资源 this.setData({ /* 清空页面数据 */ }); } }, ``` 通过以上方法,可以在tab切换时,根据需要实现销毁页面或释放资源的效果。在销毁页面时,可以清空页面数据并调用onUnload方法来释放资源;在释放页面资源时,可以只清空页面数据。注意,这种方法只是模拟了页面的销毁效果,并不是真正意义上的销毁与重建页面。 另外,vant weapp组件库中的tab组件也支持通过切换tabs属性来直接切换页面,因此也可以考虑将每个tab对应的页面封装成组件,通过切换tabs属性来实现切换页面的效果。这样每次切换tab时,实际上是创建新的组件实例,从而达到销毁页面的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值