网上看了很多解决思路,但都是针对父组件,返回上一页刷新子组件的案例很少,头疼了我一天,终于解决了,有两种思路,废话不多说,直接上代码

第一种(通过父组件的onShow来判断)

//我就不写结构了,相信都看得懂
<Share :courseId='currentId' v-if="isResetMemberInfo"></Share>

data() {
	return {
		isResetMemberInfo:true,
	}
},
onShow() {
	//v-if是可以实现刷新的,所以通过v-if来判断
	this.isResetMemberInfo = false;
	this.$nextTick(() => {
		this.isResetMemberInfo = true;
	})
}

##第二种(通过vuex的state获取的数据来判断)

//页面1
<script>
	import {mapMutations} from 'vuex'
	export default {
		
		methods: {
			...mapMutations(["setRoute"]),
			//点击跳转的事件里给vuex加字符串
			release(){ 
				uni.navigateTo({
					 url: '/pages/manage/ReleaseShare/index'//+'Shares1'
				});
				let getroute = 'Shares1'
				this.setRoute(getroute)
			},
			
		},
	}
</script>




//页面2(我自己封装的导航组件)
<script>
	import {mapState,mapMutations} from 'vuex'
	export default {
		computed:{
			...mapState({
				GetRoute: state => state.manage.GetRoute
			})
		},
		created(){},
		methods:{
			...mapMutations(["setRoute"]),
			goBack(){
				//如果state内的GetRoute字段等于页面1传过来的,就走第一条
				if(this.GetRoute == "Shares1"){
					uni.navigateTo({
						url: '/pages/manage/Community/index?CourseIndex='+1
					});
					
					this.setRoute('')
				}else{
					//否则走这个返回上一页不刷新的
					uni.navigateBack({
					    delta: 1,
						success: ()=>{
								//var pages = getCurrentPages();
								// var currPage = pages[pages.length - 1];   //当前页面
								// var prevPage = pages[pages.length - 2];  //上一个页面
								// prevPage.$vm; // 执行前一个页面的刷新
								// console.log(prevPage.$vm)
						}
					});
				}
			},
		}
	}
</script>

**总结:**两个方法有好有坏,根据自己的代码和逻辑看选择用哪个

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐