Reactive Props Destructure
这个 demo 用来验证新的编译器能力:组件参数解构里的 query、count、label 会被重写成隐藏 props 对象访问。 所以默认值、别名和嵌套回调里的读取都还能跟着父 props 一起变化。
父组件 count
raw query transfer
raw labelruntime-label
raw count2
/* RUE_REACTIVE_PROPS_DESTRUCTURED */
编译器改写后的解构 props
这个子组件直接写了解构、默认值和别名,但读取会被编译器改写成隐藏 props 对象访问,所以仍然保持响应式。
summary.get()runtime-label:TRANSFER x 2
watchEffect latest transfer |2|runtime-label| transfer
shadow(query) transfer
render text transfer / 2 / runtime-label
观察重点: 1. 关闭 query 或 label 传入后,子组件会退回默认值。 2. 改动 count、query、label 时,summary 和 watchEffect latest 会同步更新。 3. 子组件里故意写了 shadow(query) 这个局部参数,用来验证局部遮蔽不会被误改写。 4. 对于 watch(query, ...) 这种按值传递,编译器会给 warning,要求改成 watch(() => query, ...)。