react hooks+ts组件封装

简介

在react使用ts封装组件,需要注意类型, 使用 forwardRef 方法包起来

子组件

import * as React from "react";
import "./style.scss"; interface IPopup {
open(): void;
close(): void;
} const UsePopup = React.forwardRef((props, ref: React.ForwardedRef<IPopup>) => {
const [state, setState] = React.useState<boolean>(true);
const open = () => {
setState(true);
}; const close = () => {
setState(false);
}; React.useImperativeHandle(ref, () => {
return {
open,
close
};
}); return (
<div className="popup-container">
{state ? (
<div className="popup-wrapper">
<div className="popup-mask" onClick={close}></div>
<div className="popup-main">弹窗内容</div>
</div>
) : null}
</div>
);
}); export default UsePopup;

父组件

interface IPopup {
open(): void;
close(): void;
}
const popupRef = React.useRef<IPopup>(null); // 使用useRef钩子 // 调用子组件方法
const popupClick = () => {
popupRef.current?.open()
} // 引用子组件
<UsePopup ref={popupRef}></UsePopup>

react hooks + ts 封装组件的更多相关文章

  1. React Hooks中父组件中调用子组件方法

    React Hooks中父组件中调用子组件方法 使用到的hooks-- useImperativeHandle,useRef /* child子组件 */ // https://reactjs.org ...

  2. react hooks 如何自定义组件(react函数组件的封装)

    前言 这里写一下如何封装可复用组件.首先技术栈 react hooks + props-type + jsx封装纯函数组件.类组件和typeScript在这不做讨论,大家别白跑一趟. 接下来会说一下封 ...

  3. 基于react hooks,zarm组件库配置开发h5表单页面

    最近使用React Hooks结合zarm组件库,基于js对象配置方式开发了大量的h5表单页面.大家都知道h5表单功能无非就是表单数据的收集,验证,提交,回显编辑,通常排列方式也是自上向下一行一列的方 ...

  4. 利用ant-design封装react的地址输入组件

    在上一节利用element-ui封装地址输入的组件留下了个尾巴,说react搭配ant-design封装一下地址输入的组件的.本来应该早早就完成的,但是由于这中间发生了一些事情,导致了突发性的换了工作 ...

  5. React Hooks Typescript 开发的一款 H5 移动端 组件库

    CP design 使用 React hooks Typescript 开发的一个 H5 移动端 组件库 English | 简体中文 badge button icon CP Design Mobi ...

  6. React Hooks 实现一个计时器组件

    React Hooks 实现一个计时器组件 useEffect https://reactjs.org/docs/hooks-reference.html#useeffect import React ...

  7. React使用高阶组件与Hooks实现权限拦截教程

    导读 高阶组件就是接受一个组件作为参数并返回一个新组件(功能增强的组件)的函数.这里需要注意高阶组件是一个函数,并不是组件,这一点一定要注意,本文给大家分享React高阶组件使用小结,一起看看吧 高阶 ...

  8. react第七单元(组件的高级用法-组件的组合(children的用法)-高阶组件-封装组件)

    第七单元(组件的高级用法-组件的组合(children的用法)-高阶组件-封装组件) #受控组件 简而言之,就是受到状态state控制的表单,表单的值改变则state值也改变,受控组件必须要搭配onc ...

  9. 初探React Hooks & SSR改造

    Hooks React v16.8 发布了 Hooks,其主要是解决跨组件.组件复用的状态管理问题. 在 class 中组件的状态封装在对象中,然后通过单向数据流来组织组件间的状态交互.这种模式下,跨 ...

  10. 关于React Hooks,你不得不知的事

    React Hooks是React 16.8发布以来最吸引人的特性之一.在开始介绍React Hooks之前,让咱们先来理解一下什么是hooks.wikipedia是这样给hook下定义的: In c ...

随机推荐

  1. 9组-Beta冲刺-5/5

    一.基本情况(15分) 队名:不行就摆了吧 组长博客:9组-Beta冲刺-5/5 GitHub链接:https://github.com/miaohengming/studynote/tree/mai ...

  2. B. BerSU Ball

    B. BerSU Ball 排序后考虑\(dp\),\(dp_{i,j}\)表示前\(i\)个男生和前\(j\)个女生能匹配的最大数. \[\begin{aligned} if(|a_i - b_j| ...

  3. bx lr

    bx lr 的作用等同于 mov pc,lr 即跳转到lr中存放的地址处. 那么lr存放的是什么地址呢? lr就是连接寄存器(Link Register, LR),在ARM体系结构中LR的特殊用途有两 ...

  4. sshpass 带密码登陆

    brew install hudochenkov/sshpass/sshpass sshpass -p password ssh -p port user@xxxx.xxxx.xxxx.xxxx

  5. CF1693D--单调区间

    \(T_4\) 单调区间结题报告 题目描述 一句话题意:给定一个排列 \(a\) 算出有多少个区间 \([l , r]\) , 满足其可以划分为一个单调递增子序列和单调递减子序列,其中单调递增子序列长 ...

  6. C#自定义控件—流动管道

    C#用户控件之流动管道 如何绘制一个动态的流动管道(FlowPipe)? 分两步绘制 定义属性: 画布重绘: 主要技能: 管道的绘制(渐变色矩形) /// <summary> /// 画渐 ...

  7. SSH 安全机制 及常见问题

    常见问题: ssh_dispatch_run_fatal: Connection to {your_ip} port 22: invalid argument ssh -oKexAlgorithms= ...

  8. JS的可选链操作符(?.)与双问号(??),你用到了吗?

    可选链操作符(?.) 以前一般这样使用: let nestedProp = obj.first && obj.first.second; 或者这样: let temp = obj.fi ...

  9. 外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word

    TextIn Tools是一款免费的在线OCR工具,支持快速准确的文字和表格识别,手写.古籍识别,提供PDF转Markdown大模型辅助工具,同时支持PDF.WORD.EXCEL.JPG.PPT等各类 ...

  10. Git Bash OpenSSL – Generate Self Signed Certificate

    前言 以前就写过了, 只是写的太乱, 这篇是一个整理版. 以前的文章: Git Bash 创建证书 PowerShell 创建证书 我已经没有用 PowerSheel 做证书了, 所以就不介绍了. 参 ...