vue3、build后的h5 上一个页面defineExpose出你需要调用的函数 defineExpose({ initData() }) 二级页面 let pages = getCurrentPages(); let beforePage: any = pages[pages.length - 2]; beforePage._.exposed.initData() 亲测有效,build之后的h5
确实出了这个问题,我以前写修改上一页数据是这样写正常,现在这样写就会报错 后来我换了一种写法 A页面使用 uni.$on监听 B页面使用 uni.$emit传递修改的数据(A页面实时监听) A页面onUnload调用uni.$off注销监听(一定要加,防止监听值相同)
可以再onShow 中读取值,名字不能取一样,否则赋值页赋不了值,在取值页用新的值赋值就好 onShow(()=>{ const page = getCurrentPages()[0]; const vm = page.$vm; currentAddress.value = vm.useAddress; })
8 个回复
末日沙兔
vue3、build后的h5
上一个页面defineExpose出你需要调用的函数
二级页面
亲测有效,build之后的h5
Meiwah
是因为 vue3 中,方法需要暴露出来给别个来调用吗,
有没有写 defineExpose({// 暴露的方法})
1***@163.com
我写了的,还是不行,感觉是vue3不支持这个方法
2023-12-25 14:37
弄月
回复 1***@163.com: 以下代码亲测可用 ``` export function getPrevPage(preIndex = 1){
const pages = getCurrentPages();
const prevPage = pages[pages.length - preIndex - 1];
return prevPage?.$vm ? prevPage.$vm : prevPage;
}
function onSelectBrand(item: any) {
brand.value = item?.brand_name || '请选择品牌';
}
defineExpose({
onSelectBrand
})
function onSelect(item: any) {
const prev = getPrevPage()
prev?.onSelectBrand(item);
uni.navigateBack();
}
2024-04-24 09:32
DCloud_UNI_LXH
你是想调用 $vm 上的方法吗?你暴露这个方法了吗?看下你是怎么写的。如果 setup 中可能拿不到,可以换为 options 的形式书写
店小二丶
如果是setup 有好的方式么? 我现在的问题是我再详情也操作成功后想自动返回上一个,并刷新数据,目前只能靠uni.$emit 实现感觉不是很好,想问一下有没有一种更好的实现方式
2023-04-04 10:25
DCloud_UNI_LXH
回复 店小二丶: EventChannel
2023-04-04 11:18
店小二丶
回复 DCloud_UNI_LXH: 但是在setup 中的 @dcloudio/uni-app 似乎没有提供 getOpenerEventChannel 这个方法,就没有办法像
const eventChannel = this.getOpenerEventChannel()
eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
eventChannel.emit('someEvent', {data: 'test'});
这样使用
2023-04-04 11:23
DCloud_UNI_LXH
回复 店小二丶:
2023-04-04 15:52
c***@163.com - qqq
我也碰到了这个问题,请问您这边最后解决了吗? 我已经搜好几天了
1***@163.com
请问你解决了吗?
2023-11-14 19:30
弄月
用 defineExpose 可以解决
2024-04-24 09:33
BeardYound
确实出了这个问题,我以前写修改上一页数据是这样写正常,现在这样写就会报错 后来我换了一种写法
A页面使用 uni.$on监听
B页面使用 uni.$emit传递修改的数据(A页面实时监听)
A页面onUnload调用uni.$off注销监听(一定要加,防止监听值相同)
d大强
不想用 $on 监听, 在H5中 可以使用 page.$.setupState.function(); page是上一个页面的实例。在h5中可以使用,但是在小程序中 无法使用。真让人闹心。
BeardYound
都用uni了肯定就是想一套代码跑全端啊,不想去取消$off注销可以使用$once一次性监听,监听到一次方法就不生效了
2023-10-11 15:13
1***@163.com
我也遇到了,请问有人解决了吗
9***@qq.com
可以再onShow 中读取值,名字不能取一样,否则赋值页赋不了值,在取值页用新的值赋值就好