Open7
Vue3のリアクティブがなぜか壊れる
props: {
obj: { type: Object as PropType<{ value1: number; value2: number }> },
}
return {
value1: computed(() => props.obj.value1)
}
<Child :value="value1" @update="updateValue1" />
<Child :value="value2" @update="updateValue2" />
こんな感じになって、value1
の方が更新されるとvalue2
がChild
側でリアクティブに更新されなくなる。
<Child :value="value1" @update="updateValue1" />
<Child :value="value2" @update="updateValue2" />
{{ value2 }}
template
内の他箇所でレンダリングするとChild
側にもリアクティブに反映される。
<Child :value="obj.value1" @update="updateValue1" />
<Child :value="obj.value2" @update="updateValue2" />
computed
を経由せず直接props
から参照して渡すとリアクティブは特に壊れない。
この辺。
spaceType
を変更してもinfluence
は壊れない。
min
やmax
を更新したときだけinfluence
が反応しなくなる。
上にあるSliderInput
で値を更新すると下にあるSliderInput
のリアクティブが壊れるぽい。なんでや。
computed
を経由せず直接props
から参照して渡すとリアクティブは特に壊れない。
とりあえずこれが回避策でよさそう。
props
由来の値をcomputed
でそのまま返すと挙動が怪しくなる?
冗長な処理に違いないからそうならないよう気を付けておくのが無難か。