react 简单的demo

实现些简单的deomo

显示时间

自定义hooks
使用定时器、生命周期、通过状态渲染更新

// hooks 文件
import { useEffect, useState } from 'react'function getDate() {let date = new Date();let year = date.getFullYear()let hour = date.getHours();let minutes = date.getMinutes();let second = date.getSeconds();let time = `${year ?? '2024'}-${hour}:${minutes}:${second}` as string;return time;
}export function UseGetTime() {const [time, setTime] = useState<string>('');useEffect(() => {setTime(getDate())return () => {clearInterval(timerId);}}, [time]);let timerId = setInterval(() => {setTime(getDate());}, 1000);return { getTime: time };
};
// time 文件
import React from 'react'import { UseGetTime } from '../hooks/time'const Time: React.FC = () => {const { getTime } = UseGetTime();return (<>{getTime}</>)
}export default Time;

表单提交

import React from "react";
import { Form, Input, Button } from 'antd'const FormDemo: React.FC = () => {const [form] = Form.useForm();const userName = Form.useWatch('username', form);const onClick = () => {console.log('提交内容', userName)}return (<Form form={form}><Form.Item name={'username'}><Input style={{ width: 160 }} placeholder={'请输入录入项'}></Input></Form.Item><Form.Item><Button onClick={onClick} type="primary">提交</Button></Form.Item></Form>)
};export default FormDemo;

表单受控组件与非受控组件

受控组件

概念:由state状态值,交给react渲染机制控值,属于受控组件
机制:state存值,用户输入 =》onChange触发 =》set值 =》引起状态改变react重新渲染
注意:这边用Form和Form.item包裹并没有什么作用,因表单项无设定name值,无法获得表单值 ,但若设定name值反而导致受控组件失效交于form表单控制

import React, { InputHTMLAttributes, useCallback, useState } from "react";
import { Form, Input, Button, Select } from 'antd'const FormDemo: React.FC = () => {type ValueType = InputHTMLAttributes<HTMLInputElement>['value'] | bigint;const [value, setValue] = useState<ValueType | string>();const [form] = Form.useForm();const onClick = () => {console.log('提交内容', value)}const onChange = (_: string, event: Record<string, any>) => {setValue(event.label);}const onchangeIn = (event: any) => {setValue(event.target.value);};return (<Form form={form}><Form.Item ><Select showSearch placeholder="请选择" onChange={onChange} options={[{value: '01',label: '男'},{value: '02',label: '女'}]}></Select></Form.Item><Form.Item><Input value={value} style={{ width: 160 }} onChange={onchangeIn} placeholder={'请输入录入项'}></Input></Form.Item><Form.Item><Button onClick={onClick} type="primary">提交</Button></Form.Item></Form>)
};export default FormDemo;
非受控组件

概念:通过default设置默认值,由用户输入,通过dom来操作值,并不依赖react,属于非受控组件
机制:用户输入=》更新值
注意: 此时给表单项设置name值,交予表单控值,再给表单项设置value是无效的

import React, { InputHTMLAttributes, useCallback, useState } from "react";
import { Form, Input, Button, Select } from 'antd'const FormDemo: React.FC = () => {const [form] = Form.useForm();const userName = Form.useWatch('username', form);const getFormValues = form.getFieldsValue();console.log('userName', userName);console.log('getFormValues', getFormValues);const onClick = () => {console.log('提交内容', userName)}const onChange = (_: string, event: Record<string, any>) => {// 赋值}const onchangeIn = (event: any) => {// 赋值};return (<Form form={form}><Form.Item name="category"><Select showSearch placeholder="请选择" onChange={onChange} options={[{value: '01',label: '男'},{value: '02',label: '女'}]}></Select></Form.Item><Form.Item name="username"><Input defaultValue={'男'} style={{ width: 160 }} onChange={onchangeIn} placeholder={'请输入录入项'}></Input></Form.Item><Form.Item><Button onClick={onClick} type="primary">提交</Button></Form.Item></Form>)
};export default FormDemo;

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

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

相关文章

爬虫requests.get中的参数

requests.get 是 Python 中 requests 库的一个方法&#xff0c;用于发送 GET 请求。它有许多参数可以配置&#xff0c;以下是一些常见的参数&#xff1a; url&#xff1a;指定要发送 GET 请求的 URL。params&#xff1a;可选参数&#xff0c;用于向请求添加 URL 参数。data&…

多线程基础:线程创建、同步与通信——学习指南

多线程基础&#xff1a;线程创建、同步与通信——学习指南 文章目录 多线程基础&#xff1a;线程创建、同步与通信——学习指南前言一、线程创建1、原理2、案例3、使用场景推荐 二、线程同步1、原理2、案例1&#xff09;synchronized关键字1.1&#xff09;修饰实例方法&#xf…

qt-C++笔记之QSpinBox控件

qt-C笔记之QSpinBox控件 code review! 文章目录 qt-C笔记之QSpinBox控件1.运行2.main.cpp3.main.pro4.《Qt6 C开发指南》&#xff1a;4.4 QSpinBox 和QDoubleSpinBox 1.运行 2.main.cpp #include <QApplication> #include <QSpinBox> #include <QPushButton&g…

Vue3 实现基于token 用户登录

前后端分离情况下&#xff0c;实现的大致思路 1 第一次登录的时候&#xff0c;前端调用后端的登录接口&#xff0c;发送用户名与密码 2 后端收到请求&#xff0c;验证用户名和密码&#xff0c;验证成功 给前端返回一个token 3 前段拿到token 将token 存储进localStorage 和…

electron打包桌面版.exe之vue项目踩坑(vue3+electron 解决打包后首页打开空白,打包后路由不跳转及请求不到后端数据等问题)

vue项目https://www.qingplus.cn/components-web/index打包桌面版问题集合 一、静态资源加载问题 npm run electron_dev桌面版运行后页面空白&#xff0c;内容未加载。 填坑&#xff1a; 打包配置要用相对路径 vite.config.ts文件中的base要改成./&#xff0c;之前加了项目…

golang 和java对比

Go(也称为 Golang)和 Java 是两种流行的编程语言,它们在某些方面有相似之处,但在其他方面又有很大的区别。以下是它们之间的对比: 性能和并发性 Go:Go 是一种编译型语言,以其出色的并发性能而闻名。它具有轻量级的协程(goroutines)和通道(channels),使得编写并发代…

2024.3.27力扣(1200-1400)刷题记录

一、2215. 找出两数组的不同 1.排序双指针。我以为遍历时复很高&#xff0c;所以用的双指针。 class Solution:def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:#排序双指针nums1.sort()nums2.sort()ans [[],[]]a,b,n1,n2 0,0,len(nu…

软件接口安全设计规范及审计要点

1.token授权安全设计 2.https传输加密 3.接口调用安全设计 4.日志审计里监控 5.开发测试环境隔离&#xff0c;脱敏处理 6.数据库运维监控审计 项目管理全套资料获取&#xff1a;软件开发全套资料_数字中台建设指南-CSDN博客

Qt实现TFTP Server和 TFTP Client(四)

3.3 Server Server包括下面3个类&#xff1a; ServerSocketTFtpServerTFtpServerWidget 3.3.1 ServerSocket ServerSocket从BaseUdp派生实现write接口. 3.3.1.1 ServerSocket定义 class QUdpSocket; class ServerSocket : public BaseUdp { public:ServerSocket(QUdpSock…

Java 学习和实践笔记(49):用javabean和一维数组的方式来存储表格数据

还是存储下面这个表格的数据&#xff0c;但使用另一种方法来做。 用javabean和一维数组的方法来做&#xff0c;示例代码如下&#xff1a; /*先创建一个类&#xff0c;其实就是创建好一个只有各属性列的空表格*/ class Employees {private int id;private String name;private …

[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决

今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题&#xff0c;即使是非zookeeper的节点&#xff0c;或者是非集群内部节点&#xff0c;也可以通过nc扫描2181端口&#xff0c;获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述&#xff1a;CVE-2018-8012: A…

Self-Consistency Improves Chain of Thought Reasoning in Language Models阅读笔记

论文链接&#xff1a;https://arxiv.org/pdf/2203.11171.pdf 又到了读论文的时间&#xff0c;内心有点疲惫。这几天还是在看CoT的文章&#xff0c;今天这篇是讲如何利用self-consistency&#xff08;自我一致性&#xff09;来改进大语言模型的思维链推理过程。什么是self-cons…

5.4 物联网RK3399项目开发实录-Android开发之编译 Android10.0 固件(wulianjishu666)

物联网项目开发实例&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11VQMhHfIL9mZhNlls4wmjw?pwd0gfa 4. 编译 Android10.0 固件 4.1. 下载 Android SDK 由于 SDK 较大&#xff0c;可以去下载页面选择云盘下载 Firefly-RK3399_Android10.0_git_20211222.7z&#x…

Android-Handler详解_原理解析

为了方便阅读将文章分为使用篇和源码解析两篇&#xff0c;上一篇已经写了Handler是什么、有什么、怎们用&#xff0c;这一片从源码的角度分析完整流程&#xff0c;看看Handler消息机制到底是啥原理。才疏学浅&#xff0c;如有错误&#xff0c;欢迎指正&#xff0c;多谢。 完整…

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二)

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数&#xff08;二&#xff09; 说明记录 说明 简单介绍罗德里格斯变换以及OpenCV中的实现函数 记录

ClickHouse10-ClickHouse中Kafka表引擎

Kafka表引擎也是一种常见的表引擎&#xff0c;在很多大数据量的场景下&#xff0c;会从源通过Kafka将数据输送到ClickHouse&#xff0c;Kafka作为输送的方式&#xff0c;ClickHouse作为存储引擎与查询引擎&#xff0c;大数据量的数据可以得到快速的、高压缩的存储。 Kafka大家…

Ubuntu 配置 kubernetes 学习环境,让外部访问 dashboard

Ubuntu 配置 kubernetes 学习环境 一、安装 1. minikube 首先下载一下 minikube&#xff0c;这是一个单机版的 k8s&#xff0c;只需要有容器环境就可以轻松启动和学习 k8s。 首先你需要有Docker、QEMU、Hyperkit等其中之一的容器环境&#xff0c;以下使用 docker 进行。 对…

【C++】编码规范之可靠性原则

C编码规范中的可靠性原则是确保代码的可读性、可维护性和稳定性&#xff0c;以下是几个小点及其例子&#xff1a; 避免使用全局变量&#xff1a; 如果需要多个变量在全局范围内使用&#xff0c;可用context&#xff08;结构体/类&#xff09;解决耦合性问题 // 不推荐的写法&…

65W智能快充—同为科技桌面PDU插座推荐

近10年&#xff0c;移动设备的智能化、功能化已经完全且紧密的融入到我们的基础生活与工作当中。 在常态化的电子设备的应用中&#xff0c;设备的电力续航以及后续的供电充电就尤为重要。 就目前而言&#xff0c;所有消费电子产品中的输入以及充电的接口&#xff0c;usb-c可以…

酷开科技依托酷开系统用“平台+产品+场景”塑造全屋智能生活!

杰弗里摩尔的“鸿沟理论”中写道&#xff1a;高科技企业推进产品的早期市场和产品被广泛接受的主流市场之间&#xff0c;存在着一条巨大的“鸿沟”。“鸿沟”&#xff0c;指产品吸引早期接纳者后、赢得更多客户前的那段间歇&#xff0c;以及其中可预知和不可预知的阻碍。多数产…