0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

vee-validateのuseFormが突然readonlyを返していた話

Posted at

発覚した経緯

[Vue warn] Set operation on key "email" failed: target is readonly. 

コンソールにこいつが出てformが動かなくなっていた。

使用箇所

<script>
import { useForm } from 'vee-validate';

export default {
  setup() {
    const { values } = useForm({ initialValues })
    return {
      values,
    };
  }
}
</script>
<component v-model="values[key]" />

こいつを子コンポーネントでmodelValueとしていろいろ使用していた。
あるときをさかいにwarnが出た。

原因

vee-validateのversionアップデートでuseFormの返すvalueがreadonlyにされているせいだった。

解決策

①vee-validateのversionを下げる。
②v-modelを使用せずにv-bindとv-onに分ける

分ける場合

<script>
import { useForm } from 'vee-validate';

export default {
  setup() {
    const { values, setFieldValue } = useForm({ initialValues })
    return {
      values,
      setFieldValue
    };
  }
}
</script>
<template>
    <component :bindValue="values[key]" @input="setFieldValue(key, $event.target.value)" />
</template>

こんな感じで分けるのがvue3の思想っぽい。でもこの変更をサラッと入れてくるのやばすぎん?

参考urlというか原因のコミット
https://github.com/logaretm/vee-validate/issues/4282

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?