En React
, el enlace de eventos adopta el método de denominación de joroba, no DOM
el método de denominación de letras minúsculas en el elemento, por ejemplo: onclick
para escribirse como onClick
, onchange
para escribirse como, onChange
etc.
React
Los eventos vinculados no son eventos nativos, sino eventos sintetizados por eventos nativos React
, por ejemplo: click
los eventos se sintetizan en onClick
eventos, blur
, change
, input
, keydown
, keyup
etc. se sintetizan en onChange
, React
el motivo de esto es eliminar las diferencias entre diferentes navegadores
React
El principio de funcionamiento del evento se divide principalmente en los siguientes pasos
[1] Recopilar detectores de eventos: React
los detectores de eventos se recopilarán en una matriz, incluido el detector del elemento de destino y el detector del elemento raíz.
[2] Obtener todos los eventos: React
todos los nombres de eventos se procesarán en domEventName
y reactEventName
, es decir, la relación correspondiente entre react
nombres de eventos y nombres de eventosdom
React
Recorrerá simpleEventPluginEvents
la lista y procesará el nombre del evento en domEventName
sum reactEventName
, por ejemplo: click
evento corresponde a onClick
evento
Hay un total de 75 relaciones de mapeo, registationNameDependencies
que almacenan react
la relación entre los nombres de los eventos y los nombres de los eventos dependientes, por ejemplo: onClick
los eventos dependen de click
los eventos
[3] Tratamiento especial: Para onDoubleClick
los tres eventos onFocus
de y onBlur
, sus reactEventName
correspondencias son domEventName
diferentes, por lo que se requiere un tratamiento especial
[4]. Recopilación de eventos sintéticos: los objetos React
se event
procesarán en eventos sintéticos. Para eliminar las diferencias entre los diferentes navegadores, React
se ha diseñado una función normalize
para event
procesar objetos en eventos sintéticos.
Si normalize
existe, significa que propName
el atributo correspondiente es una función en el evento sintético, de lo contrario, propName
el atributo correspondiente es un evento nativo.
En React v17
, React
el manejo de eventos no se agrega a document
lo anterior, pero el manejo de eventos se agrega al contenedor raíz React
del árbol de representaciónDOM
const rootNode = document.getElementById('root');
ReactDOM.render(<App />,rootNode);
En React16
versiones anteriores, React
la mayoría de los eventos se operarán document.addEventListener()
y React V17
se reemplazarán rootNode.addEventListener()
llamando
En resumen, React
el principio del enlace de eventos es encapsular eventos nativos del navegador (como click
, keyup
etc.) en un grupo de eventos confiable entre navegadores mediante el uso de eventos sintéticos.
Escuche estos eventos sintéticos en React
sus componentes mediante el uso de controladores de eventos. React
Algunas estrategias de optimización se utilizan para mejorar el rendimiento y la eficiencia del enlace de eventos.
Por ejemplo, React
los enlaces de eventos se destruyen automáticamente cuando se desmonta el componente. Además, React
también se admiten algunas funciones avanzadas, como la delegación de eventos, la delegación de eventos, la captura y el burbujeo, etc.
La información sobre el evento se puede event
obtener a través del objeto, como el tipo de evento, el elemento desencadenante, la tecla presionada, etc.
Al usar React
el enlace de eventos, debe evitar la manipulación directa de DOM
elementos, pero debe implementar actualizaciones de estado llamando a setState
métodos de componentes para activar la nueva representación.
(AIhelp pregunta y respuesta inteligente, chatGPT)
(Agregue varias comunidades y amplíe las conexiones personales)
¿En qué escenario se usa la extensión de evento en la pregunta de entrevista JS 16-Es6?
¿En qué escenario se usa la extensión de evento en la pregunta de entrevista JS 16-Es6?