// indexPage
<script setup>
import { provide } from 'vue'
provide('foo', 'bar')
const buttonClick = () => {
uni.navigateTo({ url: '/pages/next/next' })
}
</script>
// nextPage
<script setup>
import { inject } from 'vue'
const foo = inject('foo' /*, null*/ ) // 注释掉初始值null,则【Vue warn】: injection "foo" not found.
const buttonClick = () => {
console.log(foo); // 值为 null | undefined,而不是 'bar'
}
</script>
zZZ1Ma (作者)
首先,app.vue内的provide的值,其他任何页面都可inject使用,为什么页面就不行了?不是很懂,不是整个app同一个Vue实例吗?
其次, uni.$emit/uni.$on文档作者简直了,示例代码写在一个页面内?完全无法演示一级页面传递参数给二级页面。一级页面使用uni.$emit派发事件并携带参数,二级页面uni.$on压根监听不到(事件派发时,二级页面实例还没构建)。
最后,uni.$emit/uni.$on在用于【一级页面传递参数给二级页面】这一场景时,很繁琐,目前只能这么用https://github.com/dcloudio/uni-app/issues/3945#issuecomment-1311164612
2023-10-11 12:41