iT邦幫忙

2022 iThome 鐵人賽

0
自我挑戰組

30 天線上自學前端系列 第 64

[Day 64] [React] Event Handling

  • 分享至 

  • xImage
  •  

今天的 react 課程是說明如何檢測使用者與 web app 或 component 的互動,以及如何使用 react 根據 event 呈現不同的內容。


今天課程所使用的檔案:

App.jsx

import React from "react";

function App() {
  return (
    <div className="container">
      <h1>Hello</h1>
      <input type="text" placeholder="What's your name?" />
      <button>Submit</button>
    </div>
  );
}

export default App;

課程的最後會完成 hover 到 submit 的時候, button 顏色會變成黑色。

https://ithelp.ithome.com.tw/upload/images/20221114/20151588sMdfdE8le1.png


先在 submit button 上加上 onClick 事件


      function handleClick() {
        consol.log("Submitted");
      }

      <button
        onClick={handleClick}
      >
        Submit
      </button>

這樣在點擊按鈕時,就會在 console 印 Submitted。
我們可以延伸這樣的用法,當點擊時,把文字換掉:


      function handleClick() {
        setHeadingText("Submitted");
      }
      
      <h1>{headingText}</h1>

      <button
        onClick={handleClick}
      >
        Submit
      </button>

用 hooks 來決定渲染的文字

      const [headingText, setHeadingText] = useState("Hello");
      
      function handleClick() {
        setHeadingText("Submitted");
      }
      
      <h1>{headingText}</h1>

      <button
        onClick={handleClick}
      >
        Submit
      </button>

這一段的意思是,原本所顯示的文字是 Hello,等到 onClick 偵測到點擊就換成 setHeadingText 所指定的文字內容 Submitted。

前幾天上過的 hooks 筆記:

新增條件渲染

幾天前上課的條件渲染筆記:

我們想要滑鼠移過去時,就要變黑色背景,其他時刻就是都白色


      function handleMouseOver() {
        setMouseOver(true);
      }

      function handleMouseOut() {
        setMouseOver(false);
      }

    <button
        style={{ backgroundColor: isMousedOver ? "black" : "white" }}
        onClick={handleClick}
        onMouseOver={handleMouseOver}
        onMouseOut={handleMouseOut}
      >
        Submit
      </button>

這邊有兩個事件:

onmousemove 移動 mouse
onmouseout mouse 指標離開HTML標籤

所以會有onMouseOver={handleMouseOver}onMouseOut={handleMouseOut}


上一篇
[Day 63] [React] ES6 Object & Array Destructuring 練習
下一篇
[Day 65] [React] Event Handling - 表單(註冊、登入、送出按鈕)[1]
系列文
30 天線上自學前端72
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言