我有一个州,最初是undefined.在完成某些操作之后,我正在更新该状态,并且我需要在该状态更新后立即运行一些操作.但是,由于该状态经常更改,所以我不想使用useEffect CUZ,也不希望每次状态更改时都执行代码.只是为了第一次更新.我怎样才能做到这一点呢?以下是演示代码

const [annotations,setAnnotations] =useState()

// A bunch of changes and after some time, called setAnnotations(value)

useEffect(()=> {
// here I need to do something. But, don't have the latest annotations.
// I only need to do // something only for the first time
},[]) 

推荐答案

我不希望每次状态更改时都执行代码.只是为了第一次更新

例如,您可以设置一个自定义标志来判断它是否已经调用.并依赖于此.

const flag = useRef<boolean>(true);

useEffect(() => {
   if (flag.current) {
     // do stuff
     flag.current = false; // set flag to false so it won't be called anymore
   }
}, []);
  

Reactjs相关问答推荐

eslint -无法解析模块的路径@web3modal/ethers/react导入/no-unresolved

下拉Tailwind CSS菜单与怪异beviour

如何在NextJS中仅在刷新页面和页面淡出页面过渡时添加全屏加载器

当项目开始时,它不会从三元运算符(REACT)加载一些tailwind 类名称

useEffect内部的RETURN语句在首次按钮点击事件中似乎无效的原因是什么?

Spring Boot + React + MySQL应用的架构层面有哪些?

React 状态不更新

改变输入的默认值时出现问题:number react-hook-form

为嵌套路由配置一个不存在的 url 的重定向

React js中不记名令牌中的空间问题

如何保留我的下一个授权用户会话?所以我可以使用提供的 ID 在其他路由中获取数据

在 React 的父级中多次调用子级时从子级获取数据到父级

单元测试 useLoaderData() react-router v6 加载器函数

使用 Jest/React 测试库时,如何测试由 setInterval 函数创建的 DOM 更改?

React Router v6 - 访问嵌套路由和处理手写 url 的正确方法

是什么导致了这个令人惊讶的数组导致 React

如何从 extrareducer redux 更改对象中元素的值

当页面重新加载react 路由导航到第一页 v6

仅在重新渲染后设置状态

错误未捕获的错误:[App] 不是 组件. 的所有子组件必须是