反応イベントとネイティブ イベントの違いは、反応イベントはドキュメントにバインドされるのに対し、ネイティブ イベントは dom にバインドされることです。バインディングに関しては、DOM 上のイベントがドキュメント上のイベントよりも優先されます。react のイベント オブジェクトはネイティブ オブジェクトではなく合成オブジェクトです。
このチュートリアルの動作環境: Windows 10 システム、react17.0.1 バージョン、Dell G3 コンピューター。
反応イベントとネイティブ イベントの違いは何ですか?
反応イベントはドキュメントにバインドされ、
ネイティブ イベントは dom にバインドされます。
したがって、結合場所に関しては、DOM 上のイベントがドキュメント上のイベントよりも優先されます。まず第一に、JS はいくつかの動的な操作を実装することになっており、ユーザーはフォームの送信やマウスクリックなどの機能を実装したい場合があるため、ブラウザーでこのイベントをトリガーする必要があります。 、その後、ブラウザはユーザーの行動を感知 (またはキャプチャ) し、イベントに応答します。これをイベントと呼びます。
イベント オブジェクトとは何ですか?システムはハンドラーを呼び出すと、イベントに関するすべての情報をオブジェクトにカプセル化し、それをパラメーターとしてイベント ハンドラーに渡します。このオブジェクトがイベント オブジェクトです。ネイティブ関数ではイベントがよく見られますが、これはイベント オブジェクトと呼ばれるものです。
react には、イベント処理において次の利点があります:パフォーマンスの最適化を達成するために、ほぼすべてのイベントがドキュメントに委任されます。
- ##イベントの種類ごとに、ディスパッチ関数 (dispatchEven) を使用してイベントが均一に配信されます。
- ##イベント オブジェクト (event) は合成オブジェクト (SyntheticEvent) です。 )、ネイティブではありません
- React 合成イベント
- なぜ合成イベントに抽象化されるのですか?
すべてのイベント処理関数が DOM にバインドされている場合、ページが応答するときに影響を受け、ページが非常に遅くなります。このような DOM イベントの悪用を回避し、最下層でのさまざまなブラウザ イベント間のシステムの違いを保護するために、React は中間層 -SyntheticEvent
Principle
を実装します。 React では、イベントをバインドする必要がある場合、通常は次のように JSX で記述します:<div onClick={this.onClick}>我是react点击事件</div>しかし、React では、クリック イベントは実際には div の DOM にバインドされるのではなく、DOM にバインドされます。 div の DOCUMENT に設定すると、イベントが発生してドキュメントにバブルすると、反応はイベントの内容を対応する関数に渡して処理します。
反応ネイティブ イベントでの使用方法
react はほぼすべてのネイティブ イベントをカプセル化しますが、たとえば:モーダルを開いた後、他の空白領域をクリックするとモーダルを閉じる必要がありますいくつかのサードパーティのイベントの紹介ネイティブ イベントを実装するライブラリ、およびライブラリが相互に対話する必要がある場合、
および他のシナリオでは、ビジネス ロジック処理にネイティブ イベントを使用する必要があります。 ネイティブ イベントは実際の DOM にバインドする必要があるため、通常、componentdidmout/ref 関数の実行フェーズ中にバインドされます。class Demo extends Domponent { componentDidMount () { const parentDom = ReactDom.findDOMNode(this) const childDom = parentDom.queneSelector('.button'); childDom.addEventListen('click',this.onDomClick, false) } onDOMClick = (e) => { } render () { return <div>demo</div> } }
ネイティブ イベントと合成イベントの混合使用
ビジネス シナリオでネイティブ イベントと合成イベントを混合する必要がある場合は、使用中に支払いを行う必要があります。次の点に注意してください: 応答のシーケンスclass Demo extends Domponent { componentDidMount () { const parentDom = ReactDom.findDOMNode(this) const childDom = parentDom.queneSelector('.button'); childDom.addEventListen('click',this.onDomClick, false) } onDOMClick = (e) => { console.log('dom event!') } onReactClick = (e) => { console.log('react event!') } render () { return <div onClick={this.onReactClick}>demo</div> } }結果出力:
dom event! react event!原因分析: まず第一に、ネイティブ イベントが DOM にバインドされていることを知っています。および合成イベント これはドキュメントにバインドされているため、DOM 上のイベントが最初にバブルアップすると、そのイベントが最初に実行され、合成イベントが実行される前にドキュメントにバブルアップします。 「
反応ビデオチュートリアル
>>以上が反応イベントとネイティブイベントの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

在react中,canvas用于绘制各种图表、动画等;可以利用“react-konva”插件使用canvas,该插件是一个canvas第三方库,用于使用React操作canvas绘制复杂的画布图形,并提供了元素的事件机制和拖放操作的支持。

在react中,antd是基于Ant Design的React UI组件库,主要用于研发企业级中后台产品;dva是一个基于redux和“redux-saga”的数据流方案,内置了“react-router”和fetch,可理解为应用框架。

React不是双向数据流,而是单向数据流。单向数据流是指数据在某个节点被改动后,只会影响一个方向上的其他节点;React中的表现就是数据主要通过props从父节点传递到子节点,若父级的某个props改变了,React会重渲染所有子节点。

因为在react中需要利用到webpack,而webpack依赖nodejs;webpack是一个模块打包机,在执行打包压缩的时候是依赖nodejs的,没有nodejs就不能使用webpack,所以react需要使用nodejs。

react是组件化开发;组件化是React的核心思想,可以开发出一个个独立可复用的小组件来构造应用,任何的应用都会被抽象成一颗组件树,组件化开发也就是将一个页面拆分成一个个小的功能模块,每个功能完成自己这部分独立功能。

react和reactdom的区别是:ReactDom只做和浏览器或DOM相关的操作,例如“ReactDOM.findDOMNode()”操作;而react负责除浏览器和DOM以外的相关操作,ReactDom是React的一部分。

在react中,forceupdate()用于强制使组件跳过shouldComponentUpdate(),直接调用render(),可以触发组件的正常生命周期方法,语法为“component.forceUpdate(callback)”。

react中没有双向绑定;react的设计思想就是单向数据流,没有双向绑定的概念;react是view层,单项数据流只能由父组件通过props将数据传递给子组件,满足了view层渲染的要求并且更易测试与控制,所以在react中没有双向绑定。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック



