


Peristiwa sintetik React ialah objek acara yang mensimulasikan semua keupayaan peristiwa DOM asli dalam React, iaitu, pembalut silang penyemak imbas untuk peristiwa asli penyemak imbas, ia mentakrifkan peristiwa sintetik mengikut spesifikasi W3C, serasi dengannya semua pelayar, dan mempunyai antara muka yang sama seperti peristiwa asli pelayar. Dalam React, semua acara adalah sintetik dan bukan acara DOM asli, tetapi acara DOM boleh diperolehi melalui sifat "e.nativeEvent".
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi react18, komputer Dell G3.
1. Apakah itu peristiwa sintetik? berasaskan Mekanisme acara itu sendiri melaksanakan satu set mekanisme acara, termasuk pendaftaran acara, sintesis peristiwa, menggelegak acara, penghantaran acara, dll.
Dalam React, set mekanisme peristiwa ini dipanggil peristiwa sintetik SyntheticEventAcara sintetik React (SyntheticEvent) ialah objek peristiwa yang React mensimulasikan semua keupayaan peristiwa DOM asli, iaitu, menyemak imbas silang bagi pelayar asli pembalut peranti acara. Ia mentakrifkan peristiwa sintetik mengikut spesifikasi W3C, serasi dengan semua penyemak imbas, dan mempunyai antara muka yang sama seperti peristiwa asli penyemak imbas. Contohnya,
Dalam React, semua peristiwa adalah sintetik dan bukan peristiwa DOM asli, tetapi peristiwa DOM boleh diperolehi melalui sifat e.nativeEvent. Contohnya:
const button = <button onClick={handleClick}>按钮</button>
Seperti yang anda lihat daripada di atas, peristiwa React dan peristiwa asli adalah sangat serupa, tetapi terdapat juga perbezaan tertentu:
const handleClick = (e) => console.log(e.nativeEvent);; const button = <button>按钮</button>Nama acara dinamakan berbeza
// 原生事件绑定方式 <button onclick="handleClick()">按钮命名</button> // React 合成事件绑定方式 const button = <button onClick={handleClick}>按钮命名</button>Fungsi pengendali acara ditulis secara berbeza
- Walaupun onclick nampaknya terikat pada elemen DOM , tetapi sebenarnya, fungsi proksi acara tidak terikat secara langsung pada nod sebenar, tetapi semua peristiwa terikat pada lapisan paling luar struktur, dan peristiwa bersatu digunakan untuk memantau. [Cadangan berkaitan:
// 原生事件 事件处理函数写法 <button onclick="handleClick()">按钮命名</button> // React 合成事件 事件处理函数写法 const button = <button onClick={handleClick}>按钮命名</button>,
Tutorial Pengaturcaraan]Pendengar acara ini mengekalkan pemetaan untuk menyimpan fungsi mendengar dan memproses acara di dalam semua komponen. Apabila komponen dipasang atau dinyahlekap, cuma masukkan atau alih keluar beberapa objek pada pendengar acara bersatu ini.
Apabila sesuatu peristiwa berlaku, ia mula-mula diproses oleh pendengar acara bersatu ini, dan kemudian fungsi pengendalian peristiwa sebenar ditemui dalam pemetaan dan dipanggil. Ini memudahkan pemprosesan acara dan mekanisme kitar semula, serta meningkatkan kecekapan.2. Urutan pelaksanaan
Mengenai urutan pelaksanaan peristiwa sintetik React dan peristiwa asli, anda boleh melihat contoh berikut:
Jujukan output Untuk:
import React from 'react'; class App extends React.Component{ constructor(props) { super(props); this.parentRef = React.createRef(); this.childRef = React.createRef(); } componentDidMount() { console.log("React componentDidMount!"); this.parentRef.current?.addEventListener("click", () => { console.log("原生事件:父元素 DOM 事件监听!"); }); this.childRef.current?.addEventListener("click", () => { console.log("原生事件:子元素 DOM 事件监听!"); }); document.addEventListener("click", (e) => { console.log("原生事件:document DOM 事件监听!"); }); } parentClickFun = () => { console.log("React 事件:父元素事件监听!"); }; childClickFun = () => { console.log("React 事件:子元素事件监听!"); }; render() { return ( <div ref={this.parentRef} onClick={this.parentClickFun}> <div ref={this.childRef} onClick={this.childClickFun}> 分析事件执行顺序 </div> </div> ); } } export default App;
Kesimpulan berikut boleh dibuat:
原生事件:子元素 DOM 事件监听! 原生事件:父元素 DOM 事件监听! React 事件:子元素事件监听! React 事件:父元素事件监听! 原生事件:document DOM 事件监听!React Semua peristiwa dipasang pada objek dokumen
- Apabila elemen DOM sebenar mencetuskan acara, ia akan menggelembung ke objek dokumen dan kemudian memproses acara React
- Jadi acara asli akan dilaksanakan dahulu, dan kemudian acara React akan diproses
- Akhir sekali, acara yang dipasang pada dokumen sebenarnya dilaksanakan
- Proses yang sepadan adalah seperti yang ditunjukkan dalam rajah :
Jadi saya fikir Untuk mengelakkan tingkah laku menggelegak dalam tempoh masa yang berbeza, gunakan kaedah yang berbeza, seperti berikut:
- Halang menggelegak peristiwa dan peristiwa sintetik pada dokumen paling luar, gunakan e.nativeEvent.stopImmediatePropagation()
- Peristiwa bertindak balas Mekanisme diringkaskan seperti berikut:
- Acara yang didaftarkan pada React akhirnya akan terikat pada DOM dokumen, bukannya DOM yang sepadan dengan komponen React (overhed memori dikurangkan kerana semua peristiwa terikat Pada dokumen, nod lain tidak mempunyai peristiwa terikat)
document.body.addEventListener('click', e => { if (e.target && e.target.matches('div.code')) { return; } this.setState({ active: false, }); }); }
React sendiri melaksanakan satu set mekanisme menggelegak acara, jadi inilah sebabnya acara kami.stopPropagation() tidak sah.
Bertindak balas kesan kembali daripada komponen yang dicetuskan kepada komponen induk melalui baris gilir, dan kemudian memanggil panggilan balik yang ditakrifkan dalam JSX mereka- React telah satu set Peristiwa sintetik anda sendiri SyntheticEvent
- (Perkongsian video pembelajaran: Video Pengaturcaraan Asas
- )
Atas ialah kandungan terperinci Bagaimana untuk menerangkan peristiwa sintetik tindak balas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

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

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。

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


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!
