背景
今天开发 vue 项目时遇到一个警告:
[Vue warn] toRefs() expects a reactive object but received a plain one.
控制台输出的代码只定位到 main.ts:21,也就是下面内容:
但这个定位可以说定了个寂寞。
不过好在我有 git 版本管理,知道我新增了哪些内容,于是我慢慢进行控制变量排除法,终于找到具体问题所在。
解决
最终定位到的代码如下图所示:
我在使用 arco-design 的 a-textarea 组件时,传递给 v-model 的是一个纯文本,而不是一个响应式对象。正如警告信息所说的“它期待一个响应式对象,但却收到了一个原始数据”。
知道问题所在后,解决方案就很多了,可以选择将 condition 拆分成一个一个 ref 对象,或者采用 a-form 组件,直接将 condition 作为 props 传递过去。