React学习笔记(3.0)

classnames优化类名控制

classnames是一个简单的JS库,可以非常方便的通过条件动态控制class类名的显示。

安装classnames:

复制代码
npm i classnames

导入:

javascript 复制代码
import classNames from 'classnames'
javascript 复制代码
 <div className={classNames('box3',{box2:1===1})}>我是使用classnames的文本</div>

这里使用了box3和box2的动态类名,我们来到对应的样式文件

设置了背景和字体颜色,来看最终效果

受控表单绑定

概念:使用React组件的状态(useState)控制表单的状态

在这里插入一下额外的小知识点--React调试工具:react developer tools

这个东西和vue调试工具一样,都需要去重谷歌商店中下载,不过懂的都懂,需要科学上网。也可以从网上找一些分享的资源进行下载即可,这里推荐一个网盘链接:

链接: https://pan.baidu.com/s/1wZ4BVFN65qjyxI9frRPJ7A?pwd=1rdp

下载完毕后,在开发者模式下拖拽到谷歌浏览器即可。

这时最好重启一下谷歌浏览器,否则对应的调试工具的components选项可能不会出来。

回到React双向绑定这里,就是在输入框输入值,然后在React调试工具中也可以看到对象的状态的值,相反,在调试工具中修改里面的值,对应输入框的值也会对应的进行修改。

对应的代码如下:

javascript 复制代码
// 1.声明一个React状态
  const [value,setValue]=useState('')
  //2.核心绑定流程
  //①通过value属性绑定React状态
  //②绑定onChange事件,通过事件参数e拿到输入框最新的值,反向修改到React状态
html 复制代码
<input type="text" 
      value={value}
      onChange={(e)=>setValue(e.target.value)}/>

React中获取DOM

在React中获取/操作dom,需要使用useRef钩子函数,分为两步:

1.使用useRef创建对象,并于tsx绑定

javascript 复制代码
const inputRef=useRef<HTMLInputElement>(null)
html 复制代码
<input type="text" 
      value={value}
      onChange={(e)=>setValue(e.target.value)}
      ref={inputRef}/>

2.在dom可用是,通过inputRef.current拿到dom对象

javascript 复制代码
const inputRef=useRef<HTMLInputElement>(null)
const showDom=()=>{
  console.log(inputRef.current);
  
}
html 复制代码
<input type="text" 
      value={value}
      onChange={(e)=>setValue(e.target.value)}
      ref={inputRef}/>
      <button onClick={showDom}>获取dom</button>
    </div>

所对应的效果,就是当我们点击按钮时,控制台输出dom对象

相关推荐
andrsted3 小时前
用练题簿小程序 - 让错题不再白错
学习·微信小程序·小程序·学习方法
2601_949950633 小时前
练题簿,把培训从“走过场”变成“真落地”
人工智能·学习·小程序·刷题·小程序推荐
深圳雨林凯AI6 小时前
图案裂变的“风格归一化“设计思路:主体保得住,画风才拉得齐|雨林凯AI技术笔记
人工智能·笔记
问天_观心6 小时前
大模型微调学习(二)
人工智能·python·深度学习·学习·语言模型·transformer
梦曦i6 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
指掀涛澜天下惊6 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
平头哥技术团队6 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
star learning white7 小时前
STM32入门学习5
stm32·嵌入式硬件·学习
传奇开心果编程7 小时前
【Rust入门知识点学与练】第4课:条件判断 if / else
开发语言·学习·rust
乌恩大侠7 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端