Vue.js
React
DataBinding
19
どのような問題がありますか?

この記事は最終更新日から1年以上が経過しています。

投稿日

更新日

React と Vue から単方向・双方向データバインディングの違いを知る

私は React 以外でフロントエンドを開発しなかったせいか、 双方向データバインディングを理解するのに時間がかかりました。

2つのデータバインディング(単方向・双方向)をサンプル実装したところ、理解しやすかったです。
今回はそれぞれを以下のライブラリを使用して実装しました。

  • 単方向データバインディング:React
  • 双方向データバインディング:Vue

結論

Screen Shot 2021-02-14 at 22.23.58.png

  • 単方向データバインディング
    • データの変更が View に自動的に反映される
    • View の変更をデータに反映させるには、イベントハンドラを使用したデータ更新処理が必要
  • 双方向データバインディング
    • データの変更が View に自動的に反映される
    • View の変更がデータに自動的に反映される

詳細な説明

データバインディングとは?

データバインディングの定義を知ることで、全容を把握しやすくなりました。
Wikipedia には、以下のように説明されています。

データバインディング(データバインド、データ結合)は、データと対象を結びつけ、データあるいは対象の変更を暗示的にもう一方の変更へ反映すること、それを実現する仕組みのことである

引用元:ウィキペディア(Wikipedia)

キーワードは 暗示的 という言葉で、片方に変更があった場合にもう片方を 自動的 に変更することを指します。

単方向データバインディング

React は基本的に単方向データバインディングで実装されます。
双方向データバインディング用のヘルパーも用意されていますが、 v15 で非推奨になっています。

React ではデータの変更があった場合、その変更が View に自動的に反映されます。
一方で View の変更をデータに反映する場合は、イベントハンドラでデータ更新処理を実装する必要があります。

Screen Shot 2021-02-14 at 22.26.24.png

サンプルコードは以下になります。
フォームに文字を入力したら、 onChange イベントハンドラに設定した処理が実行され、データが更新されます。
データが変更されたため、 View が自動的に更新され、フォームの下にデータが再表示されます。

双方向データバインディング

Vue は双方向データバインディングの機能を提供しています。

先述の例と同様に、データが変更されると、その変更が View に自動的に反映されます。
一方で先述の例とは異なり、イベントハンドラを実装しなくても、 View の変更がデータに自動的に反映されます。

Screen Shot 2021-02-14 at 22.27.53.png

サンプルコードは以下になります。
フォームに文字を入力したら、 自動的にデータが更新されます。
データが変更されたため、 View が自動的に更新され、フォームの下にデータが再表示されます。

参考

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ユーザー登録ログイン
tamago3keran
Ruby on Rails を使用してサーバーサイドも実装しながら、 React Native を使ってアプリ開発もしています。 またときどき AWS を触ることもありますし、業務効率のため GitHub Actions を使用してアプリ申請作業などを自動化したりもします。 人との繋がりがあるような温かみのあるサービスに興味があり、その軸で社会実装していくような事業に携わりたいです。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
19
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー