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
43000
代码可运行
举报
文章被收录于专栏:前端开发随记前端开发随记
运行总次数: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
接着上篇讲 react hook
Hook 是一个特殊的函数,使用了 JavaScript 的闭包机制,可以让你在函数组件里“钩入” React state 及生命周期等特性。Hook 不能在 class 组件中使用。这也就是我开篇说的函数式组件一把索的原因
sunseekers
2020/06/03
2.8K0
useTypescript-React Hooks和TypeScript完全指南
React v16.8 引入了 Hooks,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。这些功能可以在应用程序中的各个组件之间使用,从而易于共享逻辑。Hook 令人兴奋并迅速被采用,React 团队甚至想象它们最终将替换类组件。
前端森林
2020/04/23
9.9K0
useTypescript-React Hooks和TypeScript完全指南
120. 精读《React Hooks 最佳实践》
React 16.8 于 2019.2 正式发布,这是一个能提升代码质量和开发效率的特性,笔者就抛砖引玉先列出一些实践点,希望得到大家进一步讨论。
黄子毅
2022/03/14
1.4K0
React-Hook最佳实践
Hooks 是 React 16.8 新增的特性,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性,无需转化成类组件
xiaofeng123aa
2022/10/17
4.2K0
React + TypeScript 实践
需要添加额外的配置:"allowSyntheticDefaultImports": true
公众号@魔术师卡颂
2021/05/08
6.9K0
宝啊~来聊聊 9 种 React Hook
文章会为你讲述 React 9种 Hook 的日常用法以及进阶操作,从浅入深彻底掌握 React Hook!
19组清风
2022/02/28
1.2K0
宝啊~来聊聊 9 种 React Hook
自定义Hooks解析
自定义hooks是react16.8版本引入hooks后一种全新的逻辑复用方式,相比render props和高阶组件有很大的优势!
乐圣
2022/11/19
3K0
我们应该如何优雅的处理 React 中受控与非受控
大家好,我是19组清风。有段时间没有和大家见面了,最近因为有一些比较重要的事情(陪女朋友和换了新公司)在忙碌所以销声匿迹了一小段时间,
19组清风
2022/12/19
7K0
我们应该如何优雅的处理 React 中受控与非受控
React 进阶 - 海量数据处理和其他细节
时间分片主要解决,初次加载,一次性渲染大量数据造成的卡顿现象。浏览器执 js 速度要比渲染 DOM 速度快的多。
Cellinlab
2023/05/17
1.6K0
React 进阶 - 海量数据处理和其他细节
【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
6.1K0
10分钟教你手写8个常用的自定义hooks
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。本文是一篇以实战为主的文章,主要讲解实际项目中如何使用hooks以及一些最佳实践,不会一步步再介绍一遍react hooks的由来和基本使用,因为写hooks的文章很多,而且官网对于react hooks的介绍也很详细,所以大家不熟悉的可以看一遍官网。
徐小夕
2020/03/13
4.4K0
React Hooks 分享
        hooks: 钩子, React Hooks 的意思是,组件尽量写成纯函数,如果需要外部功能和副作用,就用钩子把外部代码"钩"进来 。
子夜星辰
2022/11/15
2.5K0
React Hooks 分享
React Hook实践指南
在React为什么需要Hook这篇文章中我们探讨了React开发团队为什么要为Function Component添加Hook的原因,在本篇文章中我将会为大家提供一份较为全面的React Hook实践指南,其中包括以下方面的内容:
进击的大葱
2022/08/22
2.7K0
你要的react+ts最佳实践指南
本文根据日常开发实践,参考优秀文章、文档,来说说 TypeScript 是如何较优雅的融入 React 项目的。
xiaofeng123aa
2022/10/03
3.3K0
超实用的 React Hooks 常用场景总结
React 在 v16.8 的版本中推出了 React Hooks 新特性。在我看来,使用 React Hooks 相比于从前的类组件有以下几点好处:
前端达人
2021/05/11
5.1K0
Note·React Hook
React Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
数媒派
2022/12/01
2.4K0
React Hooks随记
Hook存储在组件的私有属性中__hooks_list数组中。读取和存储都依赖currentIndex,如果hook的执行顺序改变,currentIndex获取的hook可能是完成错误的。
Clearlove
2021/03/08
1K0
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.8K0
React Hook丨用好这9个钩子,所向披靡
React+TypeScript使用规范
一个采用 parameterName is Type的形式返回 boolean 值的函数,但 parameterName 必须是当前函数的参数名
用户4619307
2023/05/04
5K0
【react】203-十个案例学会 React Hooks
原文地址:https://github.com/happylindz/blog/issues/19
pingan8787
2019/07/23
3.3K0
相关推荐
接着上篇讲 react hook
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验