react hooks更新、刷新子组件

16 篇文章 0 订阅
3 篇文章 0 订阅
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);

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Hooks是React 16.8的新特性,可以让我们在无需编写类组件的情况下,使用状态(state)、生命周期等React的特性。其中一个非常重要的Hooks是useState,我们可以使用它来管理组件的状态。 当我们使用useState来管理一个状态时,如果想要强制刷新这个状态,可以通过调用useState返回的第二个参数(即setState方法)来实现。但是当我们使用useState来管理的状态太多,或者需要强制刷新的状态并不是我们使用useState时定义的状态,这时候就需要使用React提供的另一个Hooks——useForceUpdate。 useForceUpdate是一个自定义Hooks,它并不是React自带的Hooks。我们可以在自己的代码中定义这个Hooks,具体实现如下: ```javascript import { useState } from "react"; function useForceUpdate() { const [value, setValue] = useState(0); return () => setValue(value => value + 1); } export default useForceUpdate; ``` 在这段代码中,我们使用useState来定义了一个状态value,并返回了一个匿名的回调函数。这个回调函数的功能是在每次调用时,将value状态的值加1,然后强制刷新组件。 在使用时,我们可以通过useForceUpdate()来获取这个功能: ```javascript import useForceUpdate from "./useForceUpdate"; function Example() { const forceUpdate = useForceUpdate(); function handleClick() { forceUpdate(); } return ( <div> <p>{Math.random()}</p> <button onClick={handleClick}>强制刷新</button> </div> ); } ``` 在这段代码中,我们在Example组件中使用useForceUpdate获取了一个forceUpdate函数,并将它绑定到了一个button的onClick事件上。当用户点击这个按钮时,调用forceUpdate函数会触发组件的强制刷新

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值