我的问题可以在这里复制
说明:我有多层组件:应用程序版本-〉子公司版本-〉孙公司版本
我正在尝试传递一个对象和一个原始的层次结构,并保持它的React性。测试React性与按钮切换布尔基元的值。
Reactivity很好地保留在组件中,但当我将其传递给可组合对象时,情况就不同了。当我将测试原语传递给ChildComp.vue中的可组合对象时,使用toRef reactivity可以工作,但当我将测试原语传递给这次在GrandChildComp.vue中创建的可组合对象时,reactivity被破坏。
我知道不同之处在于primitive是作为prop传递给GrandChildComp.vue的, Package 在computedRef <GrandChildComp :mix="computedRef"/>
中,但我不明白为什么必须传递给可组合对象computedRef以保持React性。当我传递 Package 在reactive对象中的primitive给GrandChildComp.vue时,<GrandChildComp :mix="props"/>
React性这次仅使用toRef保持。
对不起,如果我的解释不清楚,我已经尝试添加评论内的例子,使它更清楚。
2条答案
按热度按时间e3bfsja21#
问题是这个代码:
如果父进程传递了一个全新的
mix
值,则ref将指向一个过时的值。此语句只对最初传递的props.mix
值起React。与此相反:
该语句对
props
本身是React性的。我认为用计算的裁判是你最好的选择。
顺便说一下,如果要将值传递给后代,可以使用
inject
和provide
。wztqucjr2#
你做的也太复杂了。这里是简化的工作证监会Playground
使用
toRefs()
以及
或表示为
computed()