Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >react hook开发遇到的一些问题

react hook开发遇到的一些问题

作者头像
peng_tianyu
发布于 2022-12-15 10:08:26
发布于 2022-12-15 10:08:26
41600
代码可运行
举报
文章被收录于专栏:前端开发随记前端开发随记
运行总次数:0
代码可运行

问题一

  • 使用 useState改变值后 拿到的值不是最新值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const [isFocus, setIsFocus] = useState<boolean>(false)

const changeFocus = () => {
  setIsFocus(!isFocus)
}

useEffect(() => {
  console.log(isFocus)
  // do something
}, [isFocus])

因为setState是异步的 所以调用setState之后无法立刻拿到最新的值 使用setTimeout也不行 解决办法 使用useEffectisFocus为依赖 触发副作用然后做你想做的事

问题二

  • 使用刷卡器刷卡时发现设备是将卡片ID一次一次的读出来的 需要使用防抖函数包裹一下刷卡的相关操作
  • 使用防抖函数包裹发现没有效果
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const handleCardRead = useCallback(debounce(() => {
  // do something
}), [])

const handleCardRead2 = useRef(debounce(() => {
  // do something
})).current

由于函数式组件每次 render 都会导致在函数内部定义的变量都会被重新初始化;意味着每次调用debounce函数时都会重新注册一个 setTimeout 回调 使用 useRef 返回的值被缓存了起来 因此函数式组件重新渲染不会导致debounce的重复执行 使用 useCallback 声明只在组件初始化时创建debounce函数 第二个参数依赖需要设置为空数组

获取输入框的值

  • 使用antd框架 通过 onChange
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const test: React.FC = () => {
	const [value, setValue] = useState('')
	
	const onChange = value => {
	  setValue(value.target.value)
	}
	
	return(
	  <Input value={value} onChange={onChange} />
	)
}
  • 使用useRef
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const test: React.FC = () => {
  const input = useRef<HTMLInputElement>(null)

  const handleClick = () => {
    console.log(input.current.value)
  }

  return (
    <div>
    	<input type="text" ref={input} />
    	<button onClick={handleClick}></button>
    </div>
  )
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
120. 精读《React Hooks 最佳实践》
React 16.8 于 2019.2 正式发布,这是一个能提升代码质量和开发效率的特性,笔者就抛砖引玉先列出一些实践点,希望得到大家进一步讨论。
黄子毅
2022/03/14
1.4K0
超实用的 React Hooks 常用场景总结
React 在 v16.8 的版本中推出了 React Hooks 新特性。在我看来,使用 React Hooks 相比于从前的类组件有以下几点好处:
前端达人
2021/05/11
5K0
React + TypeScript 实践
需要添加额外的配置:"allowSyntheticDefaultImports": true
公众号@魔术师卡颂
2021/05/08
6.8K0
React Hook丨用好这9个钩子,所向披靡
[raect] React Hook 指南 什么是 Hook ? Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 Hook 本质上就是一个函数,它简洁了组件,有自己的状态管理,生命周期管理,状态共享。 useState useEffect useContext useReducer Hook 出现解决了什么 ? 组件之间状态复用, 例如:使用useContext 可以很好的解决状态复用问题,或者自定义Hook 来定制
程序员海军
2022/02/15
3.6K0
React Hook丨用好这9个钩子,所向披靡
React+TypeScript使用规范
一个采用 parameterName is Type的形式返回 boolean 值的函数,但 parameterName 必须是当前函数的参数名
用户4619307
2023/05/04
4.9K0
10分钟教你手写8个常用的自定义hooks
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。本文是一篇以实战为主的文章,主要讲解实际项目中如何使用hooks以及一些最佳实践,不会一步步再介绍一遍react hooks的由来和基本使用,因为写hooks的文章很多,而且官网对于react hooks的介绍也很详细,所以大家不熟悉的可以看一遍官网。
徐小夕
2020/03/13
4.3K0
React 16.x 新特性, Suspense, Hooks, Fiber
React 16.6.0 引入了lazy和Suspense。React.lazy函数可以渲染一个动态的import作为一个组件。Suspense悬停组件,它会在内容还在加载的时候先渲染fallback。它们组合就能实现之前主要是使用loadable-components,来异步加载组件,Code-Splitting。
小刀c
2022/08/16
9660
React 16.x 新特性, Suspense, Hooks, Fiber
React Hook实战
在React Hook出现之前的版本中,组件主要分为两种:函数式组件和类组件。其中,函数式组件通常只考虑负责UI的渲染,没有自身的状态也没有业务逻辑代码,是一个纯函数。而类组件则不同,类组件有自己的内部状态,界面的显示结果通常由props 和 state 决定,因此它也不再那么纯洁。函数式组件,类组件有如下一些缺点:
xiangzhihong
2020/12/21
2.2K0
React-Hook最佳实践
Hooks 是 React 16.8 新增的特性,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性,无需转化成类组件
xiaofeng123aa
2022/10/17
4.1K0
宝啊~来聊聊 9 种 React Hook
文章会为你讲述 React 9种 Hook 的日常用法以及进阶操作,从浅入深彻底掌握 React Hook!
19组清风
2022/02/28
1.2K0
宝啊~来聊聊 9 种 React Hook
【react】203-十个案例学会 React Hooks
原文地址:https://github.com/happylindz/blog/issues/19
pingan8787
2019/07/23
3.3K0
你要的react+ts最佳实践指南
本文根据日常开发实践,参考优秀文章、文档,来说说 TypeScript 是如何较优雅的融入 React 项目的。
xiaofeng123aa
2022/10/03
3.3K0
Note·React Hook
React Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
数媒派
2022/12/01
2.3K0
React Ref 使用总结
useRef 还可以传入一个初始值,这个值会保存在 ref.current 中,上面代码中,如果不给 div 元素传递 ref={divRef},则 divRef.current 的值将是我们传入的初始值。
多云转晴
2020/09/08
7.2K0
React Ref 使用总结
天天用 antd 的 Form 组件?自己手写一个吧
用 Form.Item 包裹 Input、Checkbox 等表单项,可以定义 rules,也就是每个表单项的校验规则。
神说要有光zxg
2024/04/10
4440
天天用 antd 的 Form 组件?自己手写一个吧
超性感的React Hooks(十)useRef
在函数式组件中,useRef 是一个返回可变引用对象的函数。该对象.current属性的初始值为useRef传入的参数initialVale。
用户6901603
2020/07/27
3.4K0
超性感的React Hooks(十)useRef
【React】406- React Hooks异步操作二三事
React Hooks 是 React 16.8 的新功能,可以在不编写 class 的情况下使用状态等功能,从而使得函数式组件从无状态的变化为有状态的。React 的类型包 @types/react 中也同步把 React.SFC (Stateless Functional Component) 改为了 React.FC (Functional Component)。
pingan8787
2019/11/11
5.9K0
React Hook实践指南
在React为什么需要Hook这篇文章中我们探讨了React开发团队为什么要为Function Component添加Hook的原因,在本篇文章中我将会为大家提供一份较为全面的React Hook实践指南,其中包括以下方面的内容:
进击的大葱
2022/08/22
2.7K0
再聊react hook
React Hook是React函数式组件,它不仅仅有函数组件的特性,还带有React框架的特性。所以,官网文档多次强调:
娜姐
2020/12/11
1.1K0
接着上篇讲 react hook
Hook 是一个特殊的函数,使用了 JavaScript 的闭包机制,可以让你在函数组件里“钩入” React state 及生命周期等特性。Hook 不能在 class 组件中使用。这也就是我开篇说的函数式组件一把索的原因
sunseekers
2020/06/03
2.7K0
相关推荐
120. 精读《React Hooks 最佳实践》
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验