<script setup>
import {
getCurrentInstance,
} from 'vue'
import { onLoad } from '@dcloudio/uni-app';
const { proxy } = getCurrentInstance();
const eventChannel = proxy.getOpenerEventChannel()
console.log(eventChannel)
onLoad(async () => {
eventChannel.on('emitData', data => {
console.log(data)
})
})
</script>
上面这种写法就没有打印data
下面vue2就正常
export default {
data(){
return{}
},
onLoad() {
const eventChannel = this.getOpenerEventChannel()
eventChannel.on('emitData', data => {
console.log(data )
})
}
}
- 发布:2024-03-20 17:34
- 更新:2024-03-20 18:42
- 阅读:232
产品分类: uniapp/小程序/阿里
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows 11
HBuilderX类型: 正式
HBuilderX版本号: 4.04
第三方开发者工具版本号: 3.8.4
基础库版本号: 2.9.19
项目创建方式: HBuilderX
示例代码:
操作步骤:
A页面添加跳转事件
linkTo(){
uni.navigateTo({
url: '/pages/component/view/view',
events:{
detailsEmitRefresh: async () => {
console.log('test')
}
},
success: res => {
console.log('emit', {a:1,b:2,c:3})
res.eventChannel.emit('emitData', {a:1,b:2,c:3})
}
})
},
B页面
<script setup>
import {
getCurrentInstance,
} from 'vue'
import { onLoad } from '@dcloudio/uni-app';
const { proxy } = getCurrentInstance();
const eventChannel = proxy.getOpenerEventChannel()
console.log(eventChannel)
onLoad(async () => {
eventChannel.on('emitData', data => {
console.log(data)
})
})
</script>
上面这种写法就没有打印data
下面vue2就正常
export default {
data(){
return{}
},
onLoad() {
const eventChannel = this.getOpenerEventChannel()
eventChannel.on('emitData', data => {
console.log(data )
})
}
}
A页面添加跳转事件
linkTo(){
uni.navigateTo({
url: '/pages/component/view/view',
events:{
detailsEmitRefresh: async () => {
console.log('test')
}
},
success: res => {
console.log('emit', {a:1,b:2,c:3})
res.eventChannel.emit('emitData', {a:1,b:2,c:3})
}
})
},
B页面
<script setup>
import {
getCurrentInstance,
} from 'vue'
import { onLoad } from '@dcloudio/uni-app';
const { proxy } = getCurrentInstance();
const eventChannel = proxy.getOpenerEventChannel()
console.log(eventChannel)
onLoad(async () => {
eventChannel.on('emitData', data => {
console.log(data)
})
})
</script>
上面这种写法就没有打印data
下面vue2就正常
export default {
data(){
return{}
},
onLoad() {
const eventChannel = this.getOpenerEventChannel()
eventChannel.on('emitData', data => {
console.log(data )
})
}
}
预期结果:
vue2与vue3应该都正常
vue2与vue3应该都正常
实际结果:
setup语法下channel on事件并不触发
setup语法下channel on事件并不触发
2***@qq.com (作者)
解决了
2024-03-21 11:42