最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React Hooks獲取數(shù)據(jù)實現(xiàn)方法介紹

 更新時間:2022年10月22日 10:37:43   作者:YinJie…  
這篇文章主要介紹了react hooks獲取數(shù)據(jù),文中給大家介紹了useState dispatch函數(shù)如何與其使用的Function Component進行綁定,實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

前言

react16.8推出hooks更好的支持函數(shù)組件,使用函數(shù)組件更容易進行代碼的復用,拓展性更強。

useState

useState類似于class組件的state功能,用于更新視圖

import React, { Component, useState } from 'react';
export default function Hello() {
  const [count, setCount] = useState(0); //設置默認值為0
  return <div>
    {count}
    <button onClick={()=>setCount(count + 1)}>增加</button>
  </div>
}
//useState還可以使用函數(shù)進行賦值
 const [count, setCount] = useState(()=>0); //設置默認值為0

useEffect

useEffect接受兩個參數(shù),第一個參數(shù)是要執(zhí)行的回調(diào)函數(shù),第二個參數(shù)是依賴的參數(shù),如下面的例子里只有當count發(fā)生變化的時候才會打印count,當?shù)诙€參數(shù)為空數(shù)組的時候,組件在渲染完成后會執(zhí)行一次,第二個參數(shù)不傳遞的時候每次渲染都會執(zhí)行

export default function Hello() {
  const [count, setCount] = useState(() => 0); //設置默認值為0
  // useEffect
  useEffect(() => {
  }, [count])
  return <div>
    {count}
    <button onClick={() => setCount(count + 1)}>增加</button>
  </div>
}

帶有返回值的useEffect用于清除執(zhí)行過程中的副作用

  useEffect(()=>{
    const timer = setInterval(() => {
      console.log(count);
    }, 1000);
    window.addEventListener('resize',handleResize);
    return function(){
      clearInterval(timer);
      window.removeEventListener('resize',handleResize);
    }
  }, [count])

如果每次執(zhí)行useEffect都定義一個定時器,那定時器會越來越多,通過在返回函數(shù)中清除定時器取消這個副作用。useEffect返回函數(shù)的執(zhí)行時機是下一次useEffect執(zhí)行之前。

利用這一點可以實現(xiàn)防抖和節(jié)流函數(shù)

獲取數(shù)據(jù)

下面是在函數(shù)組件中獲取數(shù)據(jù)最基本的方式:

import React, { useState, useEffect } from 'react';
import axios from 'axios';
function App() {
  const [data, setData] = useState({ hits: [] });
  useEffect(async () => {
    const result = await axios(
      'https://hn.algolia.com/api/v1/search?query=redux',
    );
    setData(result.data);
  });
  return (
    <ul>
      {data.hits.map(item => (
        <li key={item.objectID}>
          <a href={item.url}>{item.title}</a>
        </li>
      ))}
    </ul>
  );
}
export default App;

useEffect 的 hook 用于從 API 中獲取從后端請求回來的數(shù)據(jù),并使用 state hook 的更新函數(shù)在組件的本地狀態(tài)中設置數(shù)據(jù)。prmomise 解析發(fā)生在異步/等待中。

但是,當你運行應用程序時,你會發(fā)現(xiàn)效果掛鉤在組件裝載時運行,但在組件更新時也會運行,這樣它就會一次又一次地獲取數(shù)據(jù)。這是一個錯誤,需要避免。我們只想在組件掛載時獲取數(shù)據(jù)。這就是為什么你可以提供一個空數(shù)組作為 effect hook 的第二個參數(shù),以避免在組件更新時激活它:

import React, { useState, useEffect } from 'react';
import axios from 'axios';
function App() {
  const [data, setData] = useState({ hits: [] });
  useEffect(async () => {
    const result = await axios(
      'https://hn.algolia.com/api/v1/search?query=redux',
    );
    setData(result.data);
  }, []);
  return (
    <ul>
      {data.hits.map(item => (
        <li key={item.objectID}>
          <a href={item.url}>{item.title}</a>
        </li>
      ))}
    </ul>
  );
}
export default App;

第二個參數(shù)可用于定義鉤子所依賴的所有變量(在此數(shù)組中分配)。如果其中一個變量發(fā)生更改,則掛載將再次運行。如果包含變量的數(shù)組為空,則在更新組件時根本不會運行鉤子,因為它不必監(jiān)視任何變量。

還有最后一個問題。在代碼中,我們使用 async/await 從第三方 API 獲取數(shù)據(jù)。而我們知道 async函數(shù)返回一個 AsyncFunction 對象。但是,effect hook 應不返回任何內(nèi)容或清理函數(shù)。這就是為什么不允許直接在 effect hook 中使用異步的原因。讓我們通過調(diào)用effect 內(nèi)的異步函數(shù)來實現(xiàn)它的解決方法:

import React, { useState, useEffect } from 'react';
import axios from 'axios';
function App() {
  const [data, setData] = useState({ hits: [] });
  useEffect(() => {
    const fetchData = async () => {
      const result = await axios(
        'https://hn.algolia.com/api/v1/search?query=redux',
      );
      setData(result.data);
    };
    fetchData();
  }, []);
  return (
    <ul>
      {data.hits.map(item => (
        <li key={item.objectID}>
          <a href={item.url}>{item.title}</a>
        </li>
      ))}
    </ul>
  );
}
export default App;

這就是使用 React 鉤子獲取數(shù)據(jù)。

到此這篇關(guān)于React Hooks獲取數(shù)據(jù)實現(xiàn)方法介紹的文章就介紹到這了,更多相關(guān)React Hooks內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React?高德地圖進京證路線規(guī)劃問題記錄(匯總)

    React?高德地圖進京證路線規(guī)劃問題記錄(匯總)

    這篇文章主要介紹了React高德地圖進京證路線規(guī)劃問題小記,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • React SSR樣式及SEO的實踐

    React SSR樣式及SEO的實踐

    這篇文章主要介紹了React SSR樣式及SEO的實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • React 全面解析excel文件

    React 全面解析excel文件

    這篇文章主要介紹了React 全面解析excel文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • react如何使用useRef模仿抖音標題里面添加標簽內(nèi)容

    react如何使用useRef模仿抖音標題里面添加標簽內(nèi)容

    本文介紹了如何模仿抖音發(fā)布頁面,使用div元素作為輸入框,并利用CSS樣式和JavaScript動態(tài)操作DOM,實現(xiàn)類似于input輸入框的功能,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • 在react配置使用less的完美方案

    在react配置使用less的完美方案

    由于 create-react-app 使用 webpack 作為其模塊打包器,你需要修改 webpack 的配置來支持 .less 文件,這篇文章主要介紹了在react配置使用less的完美方案,需要的朋友可以參考下
    2024-04-04
  • 詳細分析React 表單與事件

    詳細分析React 表單與事件

    這篇文章主要介紹了React 表單與事件的相關(guān)資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • 淺談react受控組件與非受控組件(小結(jié))

    淺談react受控組件與非受控組件(小結(jié))

    本篇文章主要介紹了淺談react受控組件與非受控組件(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • React中事件綁定this指向三種方法的實現(xiàn)

    React中事件綁定this指向三種方法的實現(xiàn)

    這篇文章主要介紹了React中事件綁定this指向三種方法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • react實現(xiàn)點擊選中的li高亮的示例代碼

    react實現(xiàn)點擊選中的li高亮的示例代碼

    本篇文章主要介紹了react實現(xiàn)選中的li高亮的示例代碼,頁面上有很多個li,要實現(xiàn)點擊到哪個就哪個高亮。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • React中useEffect原理的代碼簡單實現(xiàn)詳解

    React中useEffect原理的代碼簡單實現(xiàn)詳解

    React的useEffect鉤子是React函數(shù)組件中處理副作用,本文將通過一個簡單的例子解釋如何用代碼實現(xiàn)useEffect的基本原理,感興趣的小伙伴可以了解下
    2023-12-12

最新評論

泸州市| 禹州市| 东辽县| 江山市| 正镶白旗| 吉首市| 宁武县| 鲁甸县| 门源| 依兰县| 新邵县| 泾阳县| 修武县| 禹城市| 遂宁市| 福贡县| 云浮市| 兰坪| 杨浦区| 天祝| 香格里拉县| 永和县| 阿荣旗| 宝兴县| 浠水县| 大城县| 松滋市| 北辰区| 平顶山市| 金华市| 宁武县| 滨州市| 哈尔滨市| 新津县| 克什克腾旗| 嘉定区| 班戈县| 阳城县| 通化县| 鸡东县| 蒙阴县|