[解決済み] Reactsの片方向データバインディングとAngularの双方向データバインディングの違いを教えてください。
質問
AngularJSとReactJSで完全に同じToDoアプリを構築した場合、React ToDoはAngularJSの双方向データバインディングに対して何が一方向のデータバインディングを使用するのでしょうか。
私は、Reactが以下のように動作することを理解しています。
Render(data) ---> UIです。
Angularとどう違うのでしょうか?
どのように解決するのですか?
アンギュラー
angularがデータバインディングを設定するとき、2つのquot;watcher"が存在します(これは単純化されたものです)。
//js
$scope.name = 'test';
$timeout(function() { $scope.name = 'another' }, 1000);
$timeout(function() { console.log($scope.name); }, 5000);
<!-- html --->
<input ng-model="name" />
入力は、まず
test
で始まり、更新され
another
に更新されます。への変更は
$scope.name
を変更すると、4000ms 後にコンソールログに反映されます。への変更は
<input />
に反映されます。
$scope.name
プロパティに自動的に反映されます。
ng-model
は入力を監視し
$scope
に通知します。コードからの変更とHTMLからの変更は
双方向バインディング
. (チェックアウト
このフィドル
)
リアクト
Reactには、HTMLがコンポーネントを変更できるような仕組みはありません。HTMLはコンポーネントが応答するイベントを発生させることができるだけです。典型的な例としては
onChange
.
//js
render() {
return <input value={this.state.value} onChange={this.handleChange} />
}
handleChange(e) {
this.setState({value: e.target.value});
}
の値は
<input />
は制御される
完全に
によって
render
関数によって行われます。この値を更新する唯一の方法は、コンポーネント自身から行うことであり、そのために
onChange
イベントを
<input />
を設定する
this.state.value
をReactコンポーネントのメソッドである
setState
. また
<input />
はコンポーネントの状態に直接アクセスできないので、変更を加えることができません。これは
一方向バインディング
. (これをチェックする
コードペン
)
関連
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】event.stopPropagationとevent.preventDefaultの違いは何ですか?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] angular-routeとangular-ui-routerの違いは何ですか?
-
[解決済み] JavaScriptで2つの配列の差を取得する方法は?
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み】AngularJSのディレクティブスコープにおける「@」と「=」の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
要素ツリー制御によるvueTreeテーブル
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
Vueの「データを聴く」原則を解説
-
[解決済み] テスト
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
[解決済み】(Google Map API) Geocodeは以下の理由で成功しませんでした。REQUEST_DENIED
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。