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

React Hooks如何主動(dòng)更新Hooks組件

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

React Hooks主動(dòng)更新Hooks組件

當(dāng)我們用useState創(chuàng)建對(duì)象數(shù)組的時(shí)候,使用數(shù)組的index去改變數(shù)組某一項(xiàng)中的對(duì)象屬性時(shí),useState無法監(jiān)聽到,此時(shí)視圖就無法更新,所以我們就需要主動(dòng)強(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
    })

此時(shí)我們?nèi)バ薷拇藢?duì)象數(shù)組

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

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

此時(shí)我們就需要主動(dòng)更新視圖

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)建一個(gè)refresh變量,用來控制視圖更新,此時(shí)再調(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é)

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

相關(guān)文章

  • 利用CDN加速react webpack打包后的文件詳解

    利用CDN加速react webpack打包后的文件詳解

    下面小編就為大家分享一篇利用CDN加速react webpack打包后的文件詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • React實(shí)時(shí)預(yù)覽react-live源碼解析

    React實(shí)時(shí)預(yù)覽react-live源碼解析

    這篇文章主要為大家介紹了React實(shí)時(shí)預(yù)覽react-live源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 深入淺析React中diff算法

    深入淺析React中diff算法

    React 最為核心的就是 Virtual DOM 和 Diff 算法,diff算法的基礎(chǔ)是Virtual DOM,接下來通過本文給大家介紹React中diff算法的相關(guān)知識(shí),對(duì)React中diff算法感興趣的朋友跟隨小編一起學(xué)習(xí)下吧
    2021-05-05
  • ahooks解決React閉包問題方法示例

    ahooks解決React閉包問題方法示例

    這篇文章主要為大家介紹了ahooks解決React閉包問題方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • React二維數(shù)組的幾種聲明和使用過程

    React二維數(shù)組的幾種聲明和使用過程

    React二維數(shù)組聲明需注意結(jié)構(gòu)與值的可變性,正確方法包括直接賦值或動(dòng)態(tài)初始化,避免使用const map=[[]]導(dǎo)致長(zhǎng)度固定,動(dòng)態(tài)擴(kuò)展時(shí)應(yīng)先定義一維數(shù)組再添加元素,確保數(shù)組大小可變
    2025-07-07
  • React?redux?原理及使用詳解

    React?redux?原理及使用詳解

    這篇文章主要為大家介紹了React?redux?原理及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • React渲染的優(yōu)化方案

    React渲染的優(yōu)化方案

    react的渲染機(jī)制是非常獨(dú)特的,有別于 Vue 框架的渲染次數(shù)的優(yōu)化計(jì)算,React 很久以來就有PureComponent、shouldUpdate,本文小編給大家介紹了React渲染的優(yōu)化方案,需要的朋友可以參考下
    2024-08-08
  • React解析html 標(biāo)簽的方法

    React解析html 標(biāo)簽的方法

    在React中,解析HTML標(biāo)簽通常是使用JSX(JavaScript XML)語法的一部分,這篇文章主要介紹了React 用來解析html 標(biāo)簽的方法,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 簡(jiǎn)單介紹react redux的中間件的使用

    簡(jiǎn)單介紹react redux的中間件的使用

    這篇文章主要介紹了簡(jiǎn)單介紹redux的中間件的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 如何使用Redux Toolkit簡(jiǎn)化Redux

    如何使用Redux Toolkit簡(jiǎn)化Redux

    這篇文章主要介紹了如何使用Redux Toolkit簡(jiǎn)化Redux,幫助大家更好的理解和學(xué)習(xí)使用React框架,感興趣的朋友可以了解下
    2021-04-04

最新評(píng)論

佳木斯市| 黔江区| 荔浦县| 陆河县| 永寿县| 长沙县| 湄潭县| 吉林市| 芦溪县| 于都县| 周口市| 微山县| 周宁县| 招远市| 吴江市| 抚顺县| 靖江市| 杭锦后旗| 醴陵市| 五莲县| 江山市| 扶余县| 辽宁省| 葫芦岛市| 玉田县| 乌恰县| 德令哈市| 南涧| 富蕴县| 大姚县| 西贡区| 合水县| 全州县| 临漳县| 郓城县| 孙吴县| 阿拉善左旗| 开化县| 泸定县| 克拉玛依市| 南丰县|