Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 29, 2025

🤔 这个 PR 的性质是?

  • 日常 bug 修复
  • 新特性提交
  • 文档改进
  • 演示代码改进
  • 组件样式/交互改进
  • CI/CD 改进
  • 重构
  • 代码风格优化
  • 测试用例
  • 分支合并
  • 其他

🔗 相关 Issue

#6198

💡 需求背景和解决方案

使用 v-model:checked 时,勾选复选框报错:[Vue warn] Set operation on key "checked" failed: target is readonly.

<t-transfer
  v-model:value="targetValue"
  v-model:checked="checked"
  :data="listData"
/>

根因useDefaultValue 返回 [Ref, Setter] 元组,但只解构了 Ref。当使用 v-model 时,返回的是父组件传入的只读 prop ref,直接赋值 innerChecked.value = checked 触发 Vue 警告。

修复

  • 解构 setInnerChecked setter 函数
  • setInnerChecked(checked) 替代直接赋值,正确触发 update:checked 事件

📝 更新日志

  • 本条 PR 不需要纳入 Changelog

tdesign-vue-next

  • fix(transfer): 修复 v-model:checked 无法正常工作的问题

@tdesign-vue-next/chat

@tdesign-vue-next/auto-import-resolver

☑️ 请求合并前的自查清单

⚠️ 请自检并全部勾选全部选项⚠️

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充
  • Changelog 已提供或无须提供
Original prompt

This section details on the original issue you should resolve

<issue_title>[Transfer] 属性“checked”使用v-model语法糖失败</issue_title>
<issue_description>### tdesign-vue-next 版本

1.14.2

重现链接

No response

重现步骤

checked属性使用双向绑定

<t-transfer
  v-model:value="targetValue"
  v-model:checked="checked"
  :data="listData"
  @checked-change="handleCheckedChange"
/>

期望结果

勾选后父级checked变量更新勾选的值

实际结果

无法选中复选框

控制台报错:[Vue warn] Set operation on key "checked" failed: target is readonly.

框架版本

Vue 3.5.17

浏览器版本

No response

系统版本

No response

Node版本

22.17.0

补充说明

No response</issue_description>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI changed the title [WIP] Fix checked attribute issue with v-model in t-transfer fix(transfer): use setter function for v-model:checked to emit update event Nov 29, 2025
Copilot AI requested a review from liweijie0812 November 29, 2025 12:22
@pkg-pr-new
Copy link

pkg-pr-new bot commented Nov 29, 2025

  • tdesign-vue-next-demo

    npm i https://pkg.pr.new/Tencent/tdesign-vue-next/@tdesign-vue-next/auto-import-resolver@6216
    
    npm i https://pkg.pr.new/Tencent/tdesign-vue-next@6216
    
    npm i https://pkg.pr.new/Tencent/tdesign-vue-next/@tdesign-vue-next/chat@6216
    

commit: dfcd779

@pkg-pr-new
Copy link

pkg-pr-new bot commented Nov 29, 2025

tdesign-vue-next-demo

npm i https://pkg.pr.new/Tencent/tdesign-vue-next/@tdesign-vue-next/auto-import-resolver@6216
npm i https://pkg.pr.new/Tencent/tdesign-vue-next@6216
npm i https://pkg.pr.new/Tencent/tdesign-vue-next/@tdesign-vue-next/chat@6216

commit: e3549a4

@liweijie0812
Copy link
Collaborator

@copilot 使用 useVModel 修复

Copy link
Contributor Author

Copilot AI commented Nov 29, 2025

@copilot 使用 useVModel 修复

Done in 34c6e09. Changed from useDefaultValue to useVModel for the checked prop, following the same pattern as value. Added a dummy checkedModelValue ref since checked doesn't have a corresponding modelValue prop.

Copilot AI changed the title fix(transfer): use setter function for v-model:checked to emit update event fix(transfer): use useVModel for v-model:checked to emit update event Nov 29, 2025
@liweijie0812
Copy link
Collaborator

@copilot 撤销useVModel修改

Copy link
Contributor Author

Copilot AI commented Nov 29, 2025

@copilot 撤销useVModel修改

Done in dfcd779. Reverted to using useDefaultValue with the setter function setInnerChecked instead of useVModel.

Copilot AI changed the title fix(transfer): use useVModel for v-model:checked to emit update event fix(transfer): use setter function for v-model:checked to emit update event Nov 29, 2025
@tdesign-bot
Copy link
Collaborator

tdesign-bot commented Nov 30, 2025

TDesign Component Site Preview Open

Component Preview
tdesign-vue-next 完成
@tdesign-vue-next/chat 失败

@uyarn uyarn closed this Dec 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Transfer] 属性“checked”使用v-model语法糖失败

4 participants