问题出现原因
很简单的需求 我要往下一个跳转的页面传参并且这个参数多 所以我不想在地址栏里面传 然后就在官方找到了它,神奇的事情出现了 值传了页面收到了 然后赋上值了 好!不刷新(不显示且页面没有改变)
解决方法:
1.设置延迟(有效简单好用但是你延迟了发送 那接收也有延迟如果不想这样请使用方法3嵌套)
setTimeout(()=>{
uni.$emit('事件名',{msg:'设置延迟'})
}, 500)
2.设置参数在本地缓存main.js里面但是我tm不可能全放进去啊(有效但不推荐)
3.嵌套使用(有效 感觉这样更好但是我使用了第一种)
思路:在你使用emit的页面使用1个on嵌套 然后去你想on接收的页面触发上面1个on的事件
onUnload() {
uni.$off('need');
},
methods: {
price: function(id) {
uni.$on('need',()=>{
uni.$emit('price', {
msg:'传参'
})
});
}
}
onLoad() {
uni.$on('price',(res)=>{
this.msg = res.msg;
});
uni.$emit('need');
},
onUnload() {
uni.$off('price');
}
你需要注意的是如果你没有在emit拿到值 记得试试在外面定义1个let item=this 然后在用item去获取(虽然我感觉大部分不会遇见)
另外在解决这个问题的时候 发现可以直接跳转并成功渲染的是
1.uni.switchTab
2.uni.navigateBack(有个憨憨抄文章抄成navigateTo 我第一次就搜到了简直了 抄作业都抄不好)
就这样 记录下