- Objective: - Breadcrumb: # 概念阐释 ## 语义 在jsx语法中完成类似于[[js Events Event Handler 事件处理程序]]的函数。 ## 语法 **直接使用函数** ```jsx let clickAlert = () => { alert('you clicked this img'); } <img onClick={clickAlert} /> ``` 在JSX中,所有的事件监听器名称都要符合js的写法 - onclick => onClick - onmouseover => onMouseOver # 实例 ### 使用箭头函数传递参数 在 React 事件处理中,如果需要向事件处理器传递自定义的参数,通常会使用箭头函数。例如: ```jsx <button onClick={() => removeItem(index)}>Remove</button> ``` # 相关内容 在 HTML 中的事件处理程序 ```html <!DOCTYPE html> <html> <head> <title>Alert Example</title> <script> // JavaScript code to display an alert function showAlert() { alert("Hello! This is an alert message."); } </script> </head> <body> <h1>Alert Example</h1> <button onclick="showAlert()">Show Alert</button> </body> </html> ``` # 问题 当“点击”图片时, 图片的src和alt更改为: - src = "https://content.codecademy.com/courses/React/react_photo-puppy.jpeg" - alt = "doggy" ```jsx import React from 'react'; import {creatRoot} from 'react-dom/client'; const container = document.getElementById('app'); const root = creatRoot(container); let makeDoggy = (e) => { ... } const kitty = ( <img src="https://content.codecademy.com/courses/React/react_photo-kitty.jpg" alt="kitty" /> ); root.render(kitty); ``` # 问题答案 **传递自动提供的参数 e ** ```jsx function makeDoggy(e) { e.target.setAttribute('src', 'https://content.codecademy.com/courses/React/react_photo-puppy.jpeg'); e.target.setAttribute('alt', 'doggy'); } const kitty = ( <img src="https://content.codecademy.com/courses/React/react_photo-kitty.jpg" alt="kitty" onClick={makeDoggy} /> ); ``` # 参考资料 - [Event Listeners in JSX - codecademy](https://www.codecademy.com/journeys/full-stack-engineer/paths/fscj-22-front-end-development/tracks/fscj-22-react-part-i/modules/wdcp-22-jsx-752c2293-9f61-412a-92e2-70ad6e01a0a7/lessons/react-jsx-advanced/exercises/jsx-event-listeners) - [Responding to Events](https://react.dev/learn/responding-to-events)