- ReactJS 教程
- ReactJS - 首頁
- ReactJS - 簡介
- ReactJS - 路線圖
- ReactJS - 安裝
- ReactJS - 特性
- ReactJS - 優勢與劣勢
- ReactJS - 架構
- ReactJS - 建立 React 應用
- ReactJS - JSX
- ReactJS - 元件
- ReactJS - 巢狀元件
- ReactJS - 使用新建立的元件
- ReactJS - 元件集合
- ReactJS - 樣式
- ReactJS - 屬性 (props)
- ReactJS - 使用屬性建立元件
- ReactJS - props 驗證
- ReactJS - 建構函式
- ReactJS - 元件生命週期
- ReactJS - 事件管理
- ReactJS - 建立一個事件感知元件
- ReactJS - 在 Expense Manager 應用中引入事件
- ReactJS - 狀態管理
- ReactJS - 狀態管理 API
- ReactJS - 無狀態元件
- ReactJS - 使用 React Hooks 進行狀態管理
- ReactJS - 使用 React Hooks 進行元件生命週期管理
- ReactJS - 佈局元件
- ReactJS - 分頁
- ReactJS - Material UI
- ReactJS - Http 客戶端程式設計
- ReactJS - 表單程式設計
- ReactJS - 受控元件
- ReactJS - 非受控元件
- ReactJS - Formik
- ReactJS - 條件渲染
- ReactJS - 列表
- ReactJS - Keys
- ReactJS - 路由
- ReactJS - Redux
- ReactJS - 動畫
- ReactJS - Bootstrap
- ReactJS - Map
- ReactJS - 表格
- ReactJS - 使用 Flux 管理狀態
- ReactJS - 測試
- ReactJS - CLI 命令
- ReactJS - 構建和部署
- ReactJS - 示例
- Hooks
- ReactJS - Hooks 簡介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定義 Hooks
- ReactJS 高階
- ReactJS - 可訪問性
- ReactJS - 程式碼分割
- ReactJS - Context
- ReactJS - 錯誤邊界
- ReactJS - 轉發 Refs
- ReactJS - 片段
- ReactJS - 高階元件
- ReactJS - 與其他庫整合
- ReactJS - 效能最佳化
- ReactJS - Profiler API
- ReactJS - Portals
- ReactJS - 無 ES6 ECMAScript 的 React
- ReactJS - 無 JSX 的 React
- ReactJS - 調和
- ReactJS - Refs 和 DOM
- ReactJS - Render Props
- ReactJS - 靜態型別檢查
- ReactJS - Strict Mode
- ReactJS - Web Components
- 其他概念
- ReactJS - 日期選擇器
- ReactJS - Helmet
- ReactJS - 內聯樣式
- ReactJS - PropTypes
- ReactJS - BrowserRouter
- ReactJS - DOM
- ReactJS - 輪播圖
- ReactJS - 圖示
- ReactJS - 表單元件
- ReactJS - 參考 API
- ReactJS 有用資源
- ReactJS - 快速指南
- ReactJS - 有用資源
- ReactJS - 討論
ReactJS - 輸入事件處理器
InputEvent 介面通常用於 Web 開發中,用於建立諸如表單欄位即時驗證、富文字編輯器或任何需要跟蹤和響應基於文字內容中使用者輸入的應用程式等功能。
語法
<input onBeforeInput={e => console.log('onBeforeInput')} />
React 中的 onBeforeInput 事件型別很重要,因為它允許我們收集和響應可編輯內容的更改。透過一個簡單的 React 應用程式,我們將研究 onBeforeInput 事件及其相關功能。
當可編輯內容發生更改時,例如使用者輸入、刪除或格式化文字時,onBeforeInput 事件會提醒我們的 React 應用程式。它對於建立富文字編輯器、表單欄位和其他互動式基於文字的元件特別有用。
InputEvent 的屬性
在我們進入小型 React 應用程式之前,讓我們瞭解一下 InputEvent 物件的重要屬性,它是 onBeforeInput 事件的一部分。
data − 輸入的字元字串儲存在 data 屬性中。如果未插入文字(例如刪除字元時),它可能為空。
dataTransfer − 此屬性返回一個 DataTransfer 物件,其中包含有關向可編輯內容新增或從中刪除富文字或純文字資料的資訊。
inputType − 它指定對可編輯材料進行的更改型別,例如輸入、刪除或格式化文字。
isComposing − 一個布林值,指示事件是在 compositionstart 之後和 compositionend 之前觸發的。這在處理具有複雜組合的語言的文字輸入時很重要。
示例
示例 - 記錄資料
讓我們透過建立一個小型 React 應用程式來使用此資訊。
我們將建立一個簡單的 React 應用,當觸發 onBeforeInput 事件時,它會記錄 InputEvent 的 data 屬性。這將使我們能夠看到事件的實際執行情況。
import React from "react";
class App extends React.Component {
render() {
return (
<div>
<h1>React InputEvent Function</h1>
<input onBeforeInput={(e) => console.log("onBeforeInput", e.data)} />
</div>
);
}
}
export default App;
輸出
這是一個基本的 React 應用程式。它建立一個帶有標題“React InputEvent 函式”和輸入欄位的頁面。
當我們在輸入欄位中鍵入或進行更改時,會觸發名為 onBeforeInput 的事件。此事件用於跟蹤我們在輸入區域中鍵入或更改的內容。
為了將事件資料記錄到控制檯,程式碼使用箭頭函式 (e) => console.log("onBeforeInput", e.data)。因此,當我們在輸入框中輸入時,e.data 部分將在控制檯中顯示我們正在鍵入的內容。
此程式碼允許我們檢視我們在輸入欄位中鍵入的內容,並且是使用 React 進行事件處理的簡單示例。
示例 - 字元計數器
這是一個另一個簡單的 React 應用程式,它展示了 onBeforeInput 事件的概念,用於為輸入欄位建立字元計數器。此應用程式將顯示我們在輸入欄位中鍵入的字元數 -
import React, { Component } from "react";
class App extends Component {
constructor() {
super();
this.state = {
charCount: 0
};
}
onBeforeInput = (e) => {
const inputText = e.target.value;
const charCount = inputText.length;
this.setState({ charCount });
};
render() {
return (
<div>
<h1>Character Counter</h1>
<input
type="text"
onBeforeInput={this.onBeforeInput}
placeholder="Type something..."
/>
<p>Character Count: {this.state.charCount}</p>
</div>
);
}
}
export default App;
輸出
示例 - 過濾帖子
現在我們將建立一個簡單的應用程式來顯示將從公共 API 獲取的帖子。為了使用 React InputEvent 處理器函式,我們將新增一個輸入欄位,該欄位根據使用者在文字框中輸入的標題過濾帖子。我們將為此目的使用 onInput 事件處理器 -
import React, { useState, useEffect } from "react";
const App = () => {
const [posts, setPosts] = useState([]);
const [searchTerm, setSearchTerm] = useState("");
useEffect(() => {
// Simulating API call
fetch("https://jsonplaceholder.typicode.com/posts")
.then((response) => response.json())
.then((data) => setPosts(data))
.catch((error) => console.error("Error fetching data:", error));
}, []);
const handleInput = (e) => {
setSearchTerm(e.target.value);
};
const filteredPosts = posts.filter((post) =>
post.title.toLowerCase().includes(searchTerm.toLowerCase())
);
return (
<div>
<h1>React API Fetch App</h1>
<input
type="text"
placeholder="Search by title"
onInput={handleInput}
/>
<ul>
{filteredPosts.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
</div>
);
};
export default App;
輸出
在這個應用程式中,我添加了一個輸入欄位,它使用 onInput 事件處理器更新 searchTerm 狀態。然後根據標題過濾帖子,並且只顯示匹配的帖子。
總結
因此,InputEvent 是處理可編輯資訊時 React 開發人員的有用工具。它使我們能夠輕鬆地收集和響應更改。我們回顧了 InputEvent 的重要特性,並構建了一個基本的 React 應用程式來演示其用法。該概念可以擴充套件到建立複雜的應用程式,例如富文字編輯器或互動式表單。