reactjs - React Hook 延迟了 useEffect 触发?

标签 reactjs react-hooks use-effect

我试图在我的 react Hook 中使用 useEffect() 来在我的 Prop 更改时更新状态。但存在延迟,并且 useEffect 仅在我再次单击 Hook 中的元素后才会触发。我对使用钩子(Hook)相当陌生,任何帮助将不胜感激。谢谢

function ImageOrderSelect (props) {
  const [clicked, setClicked] = useState(false)
  const [options, setOptions] = useState(props.options)
  const [current, setCurrent] = useState(props.current)

  useEffect(() => {
      setCurrent(props.current)
    }, [props.current])


  if(!clicked){
    return (
        <div className="image-order-select-icon" onClick={() => setClicked(!clicked)}>
            <FontAwesomeIcon size="lg" icon={faCircle} />
            <p>{current}</p>
        </div>
    )
  } else if(clicked){
      return (
          <div className="image-order-select">
              {optionsList}
          </div>
      )
  }


}

最佳答案

    useEffect(() => {

      setTimeout(()=>{
       setCurrent(props.current)
      }, 1000)
  
    }, [props.current])

您只需在显示当前内容之前添加超时/延迟...

或者最好的方法添加回调函数

useEffect(() => {

 
   setCurrent(() => props.current)
  

}, [props.current])

关于reactjs - React Hook 延迟了 useEffect 触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57788721/

相关文章:

javascript - 如何从 Apollo 客户端的 useQuery 获取响应头

reactjs - 无法修复 React-Table 列的宽度

reactjs - 根据 bool 值 react 更新 Prop 和渲染

javascript - 状态在异步函数中不更新

reactjs - 如何使用 useState 更新初始状态对象的特定属性

reactjs - 如何不在登陆(登录页面)页面上呈现标题,但总是在 react-router v6 中的所有其他页面上呈现标题?

javascript - 用 JS 传递一个对象在 Node 中抛出新错误

reactjs - React 的 useEffect 依赖数组中的 setState

reactjs - 无法从react js访问httponly cookie,但可以在 postman 应用程序中访问!这怎么可能?

reactjs - 使用react-hook-form中的 "setValue"创建了358 000种类型的 typescript 诊断