中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解React受控組件Hooks方式

發布時間:2021-10-15 14:38:25 來源:億速云 閱讀:143 作者:iii 欄目:web開發

這篇文章主要介紹“如何理解React受控組件Hooks方式”,在日常操作中,相信很多人在如何理解React受控組件Hooks方式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何理解React受控組件Hooks方式”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1.受控組件

假設我們有一個簡單的文本字段,并且想訪問其值:

import { useState } from 'react';  function MyControlledInput({ }) {   const [ value, setValue ] = useState('');   const onChange = (event) => {     setValue(event.target.value);   }      return (     <>         <div>Input value: {value}</div>         <input value={value} onChange={onChange} />     </>   ) }

如何理解React受控組件Hooks方式

打開示例(https://codesandbox.io/s/controlled-component-uwf8n)并在輸入框中輸入。可以看到 value  變量包含input字段中的值,并且在每次輸入新值時,它也會更新。

input字段受到控制,因為 React 從狀態設置其值。當用戶在input  中輸入內容時,onChange處理程序會使用從事件對象event.target.value訪問的輸入值來更新狀態。

value變量表示用戶真實輸入的值。每次需要訪問用戶在input字段中輸入的值時,只需讀取value狀態變量。

受控組件方法可以幫助我們訪問任何輸入類型的值:常規文本輸入、textarea、select 等。

2. 受控組件中的3個步驟中

設置受控組件需要3個步驟:

定義保存input值的狀態:const [value, setValue] = useState(")。

創建事件處理程序,該事件處理程序在值更改時更新狀態:

const onChange = event => setValue(event.target.value);

3.為input字段分配狀態值,并添加事件處理程序:

3. state 作為真實的數組源

我們看一個更復雜的例子。頁面中有一組員工姓名列表。我們需要添加一個 input字段,當用戶在此字段中鍵入內容時,員工列表將按姓名進行過濾。

function FilteredEmployeesList({ employees }) {  const [query, setQuery] = useState('');    const onChange = event => setQuery(event.target.value);   const filteredEmployees = employees.filter(name => {     return name.toLowerCase().includes(query.toLowerCase());   });    return (     <div>  <h3>Employees List</h3>  <input          type="text"   value={query}        onChange={onChange}      />  <div className="list">  {filteredEmployees.map(name => <div>{name}</div>)}  </div>  </div>   ); }

打開演示(https://codesandbox.io/s/gracious-dawn-29qi6?file=/src/App.js),可以自行試試。

如何理解React受控組件Hooks方式

對輸入進行防抖

在前面的實現中,只要在input中輸入一個字符,就會立即過濾列表。這并不總是很方便,因為在輸入查詢時它會分散用戶的注意力。

我們通過debounce來改善用戶體驗:在最后一次更改后,以400毫秒的延遲過濾列表。

import { useDebouncedValue } from './useDebouncedValue'; function FilteredEmployeesList({ employees }) {   const [query, setQuery] = useState('');  const debouncedQuery = useDebouncedValue(query, 400);     const onChange = event => setQuery(event.target.value);    const filteredEmployees = employees.filter(name => {  return name.toLowerCase().includes(debouncedQuery.toLowerCase());  });    return (     <div>  <h3>Employees List</h3>  <input          type="text"          value={query}          onChange={onChange}       />  <div className="list">  {filteredEmployees.map(name => <div>{name}</div>)}  </div>  </div>   ); }

打開演示(https://codesandbox.io/s/affectionate-swartz-9yk2u?file=/src/App.js),然后在input中輸放值進行查詢。員工列表不會在你打字時進行過濾,而是在最近一次按下鍵400毫秒后進行過濾。

下面是useDebouncedValue()的實現

export function useDebouncedValue(value, wait) {   const [debouncedValue, setDebouncedValue] = useState(value);    useEffect(() => {     const id = setTimeout(() => setDebouncedValue(value), wait);     return () => clearTimeout(id);   }, [value]);    return debouncedValue; }

受控組件是訪問React中input字段的值的一種方便的技術。它不使用引用,而是作為訪問input值的單一真實源。

到此,關于“如何理解React受控組件Hooks方式”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴化市| 西林县| 清水河县| 喀什市| 本溪| 娄底市| 宜章县| 乐亭县| 乌鲁木齐县| 龙里县| 延边| 杭锦后旗| 岳池县| 鹿泉市| 三明市| 镇原县| 金塔县| 台东市| 西贡区| 岢岚县| 高阳县| 阜平县| 西藏| 射洪县| 册亨县| 浠水县| 增城市| 武鸣县| 九龙坡区| 潢川县| 翼城县| 酒泉市| 通许县| 和平区| 定西市| 平和县| 科技| 奉新县| 香港| 抚宁县| 商河县|