父组件调用子组件的函数,获取子组件的变量

关键点:子组件运用了,React.forwardRef,useImperativeHandle
React.memo可要可不要,是我上个分享的代码

import React, { useRef, useState, useImperativeHandle } from 'react';

interface ListProps {
    list: string[];
    id: number;
  }
  

  const List = React.forwardRef(function MyInput(props:ListProps, ref) {
    const {list} = props;

    const count = '这个是子组件变量'
    useImperativeHandle(ref, () => ({
      reload: () => {
        // actionRef?.current?.reload(true)
        console.log('调用了子组件的reload函数')
      },
      getCount:() => count
    }));
    return (
      <div>
          <ul>
            {list.map((it, index) => <li key={index}>{it}</li>)}
          </ul>
      </div>
    );
  });

  // true 不更新 
  // prev props上一个值
  // next props下一个值
  // prev.id === next.id 上一个id和下一个id不相等,子组件才更新
function checkItemEqual(prev, next) {
    return  prev.id === next.id
  }

  export default React.memo(List, checkItemEqual);

父组件调用子组件的函数,获取子组件的变量

import {
  PageContainer,
} from '@ant-design/pro-components';
import { Button } from 'antd';
import React, {  useRef } from 'react';
import List from './components/List';

const TableList: React.FC = () => {
  const ref = useRef(null);


  const handleClick = () => {
    ref.current.reload()
    const parentCount = ref.current.getCount();
    console.log('父组件获取子组件的变量count:', parentCount)

  }
  
  return (
    <PageContainer>
      <Button onClick={handleClick}>调用子组件的方法</Button>
     <List ref={ref} id={5} list={['1','2','3']} />
    </PageContainer>
  );
};

export default TableList;



相关推荐

  1. 组件调用组件函数获取组件变量

    2024-01-20 12:38:02       35 阅读
  2. 组件调用组件方法

    2024-01-20 12:38:02       42 阅读
  3. vue组件调用组件方法

    2024-01-20 12:38:02       33 阅读
  4. Vue.js 中组件调用组件方法

    2024-01-20 12:38:02       33 阅读
  5. react组件调用组件方法

    2024-01-20 12:38:02       21 阅读
  6. vue组件调用组件方法 或传递值给组件

    2024-01-20 12:38:02       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-20 12:38:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-20 12:38:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-20 12:38:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-20 12:38:02       18 阅读

热门阅读

  1. 数据库使用主键回填

    2024-01-20 12:38:02       30 阅读
  2. c/c++中不同文件中的同名变量一定会redefine吗

    2024-01-20 12:38:02       27 阅读
  3. git format-patch怎么用

    2024-01-20 12:38:02       29 阅读
  4. js事件循环以及promise

    2024-01-20 12:38:02       30 阅读