欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React Hooks如何主動更新Hooks組件

 更新時間:2023年11月14日 17:08:54   作者:Franklin___  
這篇文章主要介紹了React Hooks如何主動更新Hooks組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

React Hooks主動更新Hooks組件

當(dāng)我們用useState創(chuàng)建對象數(shù)組的時候,使用數(shù)組的index去改變數(shù)組某一項(xiàng)中的對象屬性時,useState無法監(jiān)聽到,此時視圖就無法更新,所以我們就需要主動強(qiáng)制更新視圖

const [friendCircleArr, setFriendCircleArr] = useState({
        name: 'Lucy',
        avator: P1,
        content: {
            text: '今天上課好累啊',
            image: null
        },
        time: '剛剛',
        isLike: false
    }, {
        name: 'Helena',
        avator: P2,
        content: {
            text: '杰倫太帥了吧??!',
            image: [Zhou1, Zhou2, Zhou3]
        },
        time: '1分鐘前',
        isLike: false
    })

此時我們?nèi)バ薷拇藢ο髷?shù)組

const likeClick = index => {
    const tempArr = friendCircleArr
    tempArr[index].isLike = !tempArr[index].isLike
    setFriendCircleArr(tempArr)
}

我們會發(fā)現(xiàn)視圖并沒有發(fā)生更新

此時我們就需要主動更新視圖

const [refresh, setRefresh] = useState(false)
useEffect(() => {
  refresh && setRefresh(false)
}, [refresh])
 
// 修改之前的代碼
const likeClick = index => {
    const tempArr = friendCircleArr
    tempArr[index].isLike = !tempArr[index].isLike
    setFriendCircleArr(tempArr)
    setRefresh(true)
}

創(chuàng)建一個refresh變量,用來控制視圖更新,此時再調(diào)用likeClick方法,視圖就可以正常更新了

react hooks更新、刷新子組件

import React, { Fragment, useEffect, useState, } from 'react';
import {
  Tabs,
  Button,
} from 'antd';
import { connect, history } from 'umi';
import Cmp1 from './components/cmp1';
import Cmp2 from './components/cmp2';
import Cmp3 from './components/cmp3';
import Cmp4 from './components/cmp4';
import Cmp5 from './components/cmp5';
import Cmp6 from './components/cmp6';

const { TabPane } = Tabs;

const DemoPage = () => {
  const [refresh, setRefresh] = useState(false);
  useEffect(() => {
    refresh && setTimeout(() => setRefresh(false));
  }, [refresh]);
  // tab切換
  const handleTabChange = (key) => {
    setCurrentKey(key);
  };
  //刷新,重新加載組件
  const handleReload = () => {
      setRefresh(true);
  };

  return (
    <Fragment>
      <div>
          <Button onClick={handleReload}>刷新</Button>
        <div>
          <Tabs activeKey={currentKey} onChange={handleTabChange}>
            <TabPane tab="1" key="1"></TabPane>
            <TabPane tab="2" key="2"></TabPane>
            <TabPane tab="3" key="3"></TabPane>
            <TabPane tab="4" key="4"></TabPane>
            <TabPane tab="5" key="5"></TabPane>
            <TabPane tab="6" key="6"></TabPane>
          </Tabs>
          {currentKey === '1' && !refresh && (
              <Cmp1/>
          )}
          {currentKey === '2' && !refresh && (
              <Cmp2/>
          )}
          {currentKey === '3' && !refresh && (
             <Cmp3/>
          )}
          {currentKey === '4' && !refresh && (
              <Cmp4/>
          )}
          {currentKey === '5' && !refresh && (
              <Cmp5/>
          )}
          {currentKey === '6' && !refresh && (
              <Cmp6/>
          )}
        </div>
      </div>
    </Fragment>
  );
};
export default connect()(DemoPage);

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • React的Props、生命周期詳解

    React的Props、生命周期詳解

    “Props” 是 React 中用于傳遞數(shù)據(jù)給組件的一種機(jī)制,通常作為組件的參數(shù)進(jìn)行傳遞,在 React 中,props 是只讀的,意味著一旦將數(shù)據(jù)傳遞給組件的 props,組件就不能直接修改這些 props 的值,這篇文章主要介紹了React的Props、生命周期,需要的朋友可以參考下
    2024-06-06
  • React中使用react-file-viewer問題

    React中使用react-file-viewer問題

    這篇文章主要介紹了React中使用react-file-viewer問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React 項(xiàng)目中動態(tài)設(shè)置環(huán)境變量

    React 項(xiàng)目中動態(tài)設(shè)置環(huán)境變量

    本文主要介紹了React 項(xiàng)目中動態(tài)設(shè)置環(huán)境變量,本文將介紹兩種常用的方法,使用 dotenv 庫和通過命令行參數(shù)傳遞環(huán)境變量,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • ReactQuery系列之?dāng)?shù)據(jù)轉(zhuǎn)換示例詳解

    ReactQuery系列之?dāng)?shù)據(jù)轉(zhuǎn)換示例詳解

    這篇文章主要為大家介紹了ReactQuery系列之?dāng)?shù)據(jù)轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • react函數(shù)組件類組件區(qū)別示例詳解

    react函數(shù)組件類組件區(qū)別示例詳解

    這篇文章主要為大家介紹了react函數(shù)組件類組件區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 解決React報錯`value` prop on `input` should not be null

    解決React報錯`value` prop on `input` should&

    這篇文章主要為大家介紹了React報錯`value` prop on `input` should not be null解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • React超詳細(xì)講述Fiber的使用

    React超詳細(xì)講述Fiber的使用

    在fiber出現(xiàn)之前,react的架構(gòu)體系只有協(xié)調(diào)器reconciler和渲染器render。當(dāng)前有新的update時,react會遞歸所有的vdom節(jié)點(diǎn),如果dom節(jié)點(diǎn)過多,會導(dǎo)致其他事件影響滯后,造成卡頓。即之前的react版本無法中斷工作過程,一旦遞歸開始無法停留下來
    2023-02-02
  • React?Native性能優(yōu)化紅寶書方案詳解

    React?Native性能優(yōu)化紅寶書方案詳解

    React?Native?是Facebook在React.js?Conf2015推出的開源框架,使用React和應(yīng)用平臺的原生功能來構(gòu)建Android和iOS應(yīng)用,這篇文章主要介紹了React?Native性能優(yōu)化紅寶書,需要的朋友可以參考下
    2024-06-06
  • 詳解React 16 中的異常處理

    詳解React 16 中的異常處理

    這篇文章主要介紹了詳解React 16 中的異常處理的相關(guān)資料,React 16.x 版本中,引入了所謂 Error Boundary 的概念,從而保證了發(fā)生在 UI 層的錯誤不會連鎖導(dǎo)致整個應(yīng)用程序崩潰;未被任何異常邊界捕獲的異??赡軙?dǎo)致整個 React 組件樹被卸載,需要的朋友可以參考下
    2017-07-07
  • React Hook 監(jiān)聽localStorage更新問題

    React Hook 監(jiān)聽localStorage更新問題

    這篇文章主要介紹了React Hook 監(jiān)聽localStorage更新問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論