Vue と React を学び始めています。それぞれの違いについて書かれているブログ記事などを見ると、Vue は双方向データバインディングがつらいという記述がよくあります。なぜ、双方向がつらいのかが理解できていません。小さいサンプルではありますが、僕が試した限りでは Vue も React も実質同じような書き方になるのではないかと思っています。
試したこと
- 親子関係のコンポーネントで、データのやりとりを試した
- 子コンポーネントの
<input>
入力内容を、親コンポーネントの state に反映するだけ
サンプルコード
React の場合
- React 公式ドキュメントにあるリフトアップを参考にしました
- 親コンポーネントで
setState
を使った更新する関数を定義 - 子コンポーネントに関数を渡す
- 子コンポーネントの
onChange
イベントで渡された関数を呼び出す - 親コンポーネントの state が更新される
Vue の場合
- 親コンポーネントで更新する関数を定義
- 子コンポーネントに
@input
で関数を渡す - 子コンポーネントから
emit
で渡された関数を呼び出す - 親コンポーネントの state が更新される
という形で、書き方こそ違うものの、更新する関数を渡して子コンポーネント自身では何も更新しないので、どちらも同じような構造だと理解をしています。
Vue の場合は更新する関数定義を v-model
で省略して書けることを、双方向データバインディングと表現していますが、この v-model
のブラックボックス的な感じのものが、つらいと表現される部分なのでしょうか。それとも、もっと規模が大きくなってくると出てくる、Vue 双方向データバインディングのつらさがあるのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/07 00:29
2021/12/07 04:51 編集