ホームページ >ウェブフロントエンド >フロントエンドQ&A >なぜ React は mvvm フレームワークではないのか
react は一方向のデータ バインディングであり、mvvm の最も重要な機能は双方向のデータ バインディングであるため、mvvm フレームワークではビューをマップするために vm オブジェクトが必要ですが、react には vm がありません。純粋な意味で、オブジェクトにはプロパティと状態があるため、react は mvvm フレームワークではありません。
このチュートリアルの動作環境: Windows 10 システム、react17.0.1 バージョン、Dell G3 コンピューター。
mvvm
まず、mvvm の意味を理解してください。 vm はビューモードを意味します。
したがって、mvvm フレームワークには、ビューをマップするための vm オブジェクトが必要です。
つまり、vm オブジェクトの属性が変更されると、対応するビュー パーツもそれに応じて更新されます。より古典的なものは、knockoutjs で、主要な概念はビュー モデル、コンピューティング、ビュー テンプレートなどです。はい、実際には vue にはその影がたくさんあります。
react
それでは、react を見てみましょう。これには純粋な意味での vm オブジェクトはなく、属性と状態のみがあります。
属性と状態を使用してビューをマップします。では、属性と状態と vm の違いは何でしょうか?個人的には、vm オブジェクトは、値が外部から渡されるか、内部で定義されるかに関係なく、同等に扱われると思います。多くの場合、双方向バインディングの仕組みがあり、初期の flex がすごかったのかもしれませんが、その後の mvvm フレームワークには双方向バインディングの概念があります。一方、React は属性の不変性と一方向のデータ フローを重視します。内部状態は内部で制御されます。
このようなデザインは、デザインの観点からはより複雑になる可能性がありますが、使用の観点からはより確実かつ明確になります。 React に精通している場合は、適切なコンポーネントの適切な状態を管理し、状態を合理的に階層化すると、アプリケーションの複雑さが大幅に軽減されます。次に、redux にはコンテナコンポーネントと純粋な表示コンポーネントという非常に高度な概念があり、この設計思想を理解すると、複雑なものを少数のコンポーネントに集中させることができ、ほとんどのコンポーネントが純粋な表示コンポーネントになり、複雑さがさらに軽減されます。アプリケーションの性別。
MVVM の最も重要な機能の 1 つである双方向バインディング。
React にはこれがありません。一方向のデータ バインディングです。
React は、状態駆動型のビューを備えた一方向のデータ フロー ライブラリです。
State --> View --> New State --> New View
推奨学習: 「react ビデオ チュートリアル 」
以上がなぜ React は mvvm フレームワークではないのかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。