一、Vite React+ts基础写法

文章目录

  • 安装
  • useState
  • props 传参
      • 数据传参,标签嵌套传参
      • 函数传参
      • useRef useEffect 获取dom 副作用hooks


安装

npm create vite@latest
执行后选择react ts

useState

使用ts写法 type声明数据格式

import { useState } from 'react'
import './App.css'
type User = {a: string
}
function App() {const [count, setCount] = useState<User | null>(null)const b = () => {setCount(null)setCount({ a: "asd" })}return (<>{/* count?.a 排除ts null报错,显示页面 */}<button onClick={b}>{count?.a}</button></>)
}export default App

props 传参

数据传参,标签嵌套传参

import './App.css'
type Props ={className? :stringchildren?:React.ReactNode
}
function Button(props:Props) {const {className,children} =propsconsole.log(children);return (<><button className={className}>{children}</button></>)
}function App() {return (<><Button className="text"></Button><Button><span>asds</span></Button></>)
}export default App

函数传参

import './App.css'
type Props = {onGetMsg:(msg:string)=>void
}
function Button(props: Props) {const {onGetMsg} =propsreturn (<><button onClick={()=>{onGetMsg('ASD')}}>BTUU</button></>)
}function App() {const getMsgHandler = (msg:string)=>{console.log(msg);}return (<><Button onGetMsg={getMsgHandler}></Button></>)
}export default App

useRef useEffect 获取dom 副作用hooks

获取DOM
定时器设置

import { useEffect, useRef } from 'react'
import './App.css'function App() {// 获取dom元素const a = useRef<HTMLInputElement>(null)//  useRef配合定时 延迟器使用,离开关闭const b = useRef<number | undefined>(undefined)useEffect(() => {//  聚焦a.current?.focus()b.current = setInterval(() => {console.log('123');}, 2000)return () => clearInterval(b.current)}, [])return (<><input type="text" ref={a} /></>)
}export default App

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程与线程(Thread)

1.相关概念 (1). 程序(program) : 为完成特定任务&#xff0c;用某种语言编写的一组指令的集合.即指一块静态的代码. (2). 进程(progress) : 程序的一次执行过程&#xff0c;或者是正在运行中的应用程序(如正在运行的QQ&#xff0c;正在运行的网易第五人格). 每一个进程都有…

C++函数模板详解(结合代码)

目录 1. 模板概念 2. 函数模板语法 3. 函数模板注意事项 4. 函数模板案例 5. 普通函数与函数模板的区别 6. 普通函数与函数模板的调用规则 7. 模板的局限性 1. 模板概念 在C中&#xff0c;模板是一种通用的程序设计工具&#xff0c;它允许我们处理多种数据类型而不是固…

Linux系统定时备份mysql数据库

1、创建shell脚本mysql_db_backup并赋予执行权限 #!/bin/bash #备份目录 BACKUP/data/backup/db #当前时间 DATETIME$(date %Y-%m-%d_%H%M%S) echo $DATETIME #数据库地址 HOSTlocalhost #数据库用户名 DB_USERroot #数据库密码 DB_PWpwd123 #备份的数据库名 DATABASEApolloPo…

Symbol 类型必知必会

一. Symbol的概念 Symbol 是 JavaScript 中的一种新的基本数据类型&#xff0c;引入自 ECMAScript 6&#xff08;ES6&#xff09;标准。它是一种不可变且唯一的数据类型&#xff0c;可以用来创建独一无二的键&#xff08;key&#xff09;。 Symbol 的创建方式是通过调用全局的…

测试开发工程师(QA)职业到底需要干些什么?part4:安全QA

安全测试开发QA工作的主要目标是确保软件、应用程序或系统在安全方面的健壮性和可靠性。以下是安全测试开发QA工作中的一些常见任务和职责&#xff1a; 安全测试计划和策略&#xff1a;安全测试开发QA团队负责制定全面的安全测试计划和策略。他们会评估应用程序或系统的安全需求…

【优选算法】专题1 -- 双指针 -- 复写0

前言&#xff1a; 补充一下前文没有写到的双指针入门知识&#xff1a;专题1 -- 双指针 -- 移动零 目录 基础入门知识&#xff1a; 1. 复写零&#xff08;easy&#xff09; 1. 题⽬链接&#xff1a;1089.复习0 - 力扣&#xff08;LeetCode&#xff09; 2. 题⽬描述&#xff…

洗牌算法打乱数字排序

/// <summary>/// 洗牌算法打乱数字排序/// </summary>/// <param name"arr"></param>/// <returns></returns>public static Texture[] FisherYatesshuffle(Texture[] arr){// 打乱数组元素的索引System.Random rand new Syst…

数据容器-dict以及总结-Python

师从黑马程序员 字典的定义 同样使用{},不过存储的元素是以个个的&#xff1a;键值对&#xff0c;如下语法&#xff1a; #定义字典 my_dict1{"王力宏":99,"周杰伦":88,"林俊杰":77} #定义空字典 my_dict2{} my_dict3dict() print(f"字典1…

springboot 将manage关闭。

这是SpringBoot自带的接口&#xff0c;会将所有的接口暴露在外面。所以我们上生产环境&#xff0c;需要将这个接口给关闭。 默认是 management.endpoints.web.exposure.include* 只需将配置文件改成下面&#xff0c;Springboot自带的接口就会关闭。 management.endpoints.…

【物联网开源平台】tingsboard二次开发

别看这篇了&#xff0c;这篇就当我的一个记录&#xff0c;我有空我再写过一篇&#xff0c;编译的时候出现了一个错误&#xff0c;然后我针对那一个错误执行了一个命令&#xff0c;出现了绿色的succes,我就以为整个tingsboard项目编译成功了&#xff0c;后面发现的时候&#xff…

记录微信小程序云开发的增删改查

目录 一、准备工作 1、创建集合添加数据 2、设置数据权限 3、小程序连接数据库 二、增删改查 1.查 1、查询单集合所有数据 2、条件查询 1、直接:相当于等于 2、调用指令 3、查询单条&#xff08;根据id查询&#xff09; 2.增 3.改 4.删 一、准备工作 1、创建集合添…

Nginx常见面试题以及答案

一、场景问题 Nginx 是一款高性能的 HTTP 和反向代理服务器&#xff0c;也经常用于负载均衡。以下是一些常见的 Nginx 面试题和答案&#xff1a; 1、什么是 Nginx&#xff1f;它的主要优势是什么&#xff1f; 答: Nginx 是一个开源的高性能 HTTP 服务器和反向代理服务器。它…

Linux实战笔记(五) shell

大家好&#xff0c;我是半虹&#xff0c;这篇文章我们介绍一下 shell 1、Shell Shell 通常泛指系统提供给用户的操作界面&#xff0c;是系统内核与用户之间的连接 Shell 这个名字其实还挺形象的&#xff0c;中文翻译是壳&#xff0c;什么的壳呢&#xff0c;自然是系统内核的壳…

力扣---最长公共子序列---二维动态规划

思想&#xff1a; 定义g[i][j]&#xff1a;text1的前i位和text2的前j位的最长公共子序列长度。递推公式&#xff1a;如果text[i]text[j]&#xff0c;那么只需要看g[i-1][j-1]即可&#xff0c;此时g[i][j]g[i-1][j-1]1。如果text[i]!text[j]&#xff0c;那么g[i][j]max(g[i-1][j…

【研发管理】研发管理规范

研发管理规范 目的定义工作职责产品经理项目经理运维负责人研发负责人研发工程师 基本原则研发过程描述需求分析分析设计研发实现测试验收发布上线线上监控 目的 软件研发相关管理&#xff0c;有效控制技术风险&#xff0c;提高研发和运行质量 定义 包括需求分析、分析设计…

【C】盛最多水的容器(双指针)

盛最多水的容器 原题目链接:点击跳转 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和(i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说…

小学生古诗文大会往届真题测一测(来自主办方)和非常详细的解析

新学期开学一眨眼已经过了一个多月了&#xff0c;有家长朋友开始关心2024年上海市小学生古诗文大会什么时候开始&#xff1f;如何准备小学生古诗文大会&#xff1f;如何激发孩子学习古诗词的兴趣&#xff1f;如何提高小学古诗词和古诗文大会的学习成绩&#xff1f;... 最近&…

基于SpringBoot+Vue共享汽车管理系统(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

3.25C++

定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转 #include <iostream> #include <cstring> usi…

网络基础二——序列化与反序列化

1、应用层 我们程序员写的一个个解决我们实际问题&#xff0c;满足我们日常需求的网络程序&#xff0c;都是在应用层。 2、再谈“协议” 协议是一种 " 约定 "。 socket api 的接口 , 在读写数据时 , 都是按 " 字符串 " 的方式来发送接收的 . 如果我们…