antv select v-modelvalue 的绑定为何失效?

环境

  • vue3
  • ant-design-vue

现象

<a-select
  v-model:value="keywords"
  :options="[{label: 'option1', value: 1}]"
  @change="onChange"
/>

<script setup>
const keywords = ref('')
const onChange = () => {
    keywords.value = undefined
}
</script

执行的结果是复选框中仍然是 option1
起初怀疑是不是由于类似 chunk update 这种合并批处理的机制,因此增加了一个点击事件。

<a-select
  v-model:value="keywords"
  :options="[{label: 'option1', value: 1}]"
  @change="onChange"
/>
<a @click="onChange">click</a>

<script setup>
const keywords = ref('')
const onChange = () => {
    keywords.value = undefined
}
</script

点击click 后,仍然无法清空数据。

sandbox

分析

由于 @change 自动更新了 value。但是,如果在 onChange 中更新的 value 会导致无法触发 keywordsproxy setter

// 如果 onChange 更新了 keywords.value,则不会触发
watch(() => keywords.value, () => {
    console.log('change keyword', keywords.value);
});

目前解决方案

通过执行一次新的宏任务。

阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题