关于react hooks的使用

发布于 2022-09-12 01:39:46 字数 502 浏览 17 评论 0

我的场景是这样的:有一个输入框,点击保存的时候判断格式是否正确,正确才能保存,发送请求。

function HookExample() {
    const [canSubmit, setCanSubmit] = useState(false)
    useEffect(() => {
       // 这里写啥呢?还是不应该这么写
    },[canSubmit])
    function check() {
        if(格式正确){
            setCanSubmit(true)
        }
    }
    function save() {
        check()
        // 我知道check里面就算成功了也是异步的,所以第一次保存就有问题了。。。
        if(!canSbumit) return
        // 发送请求
        post(url)    
        
    }

}

总感觉怎么写都不行

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

孤芳又自赏 2022-09-19 01:39:46
useEffect(async () => {
  const result = await check();
  setCanSubmit(result);
});
画▽骨i 2022-09-19 01:39:46

可以在 useEffect 中执行请求操作,然后再请求完成之后重置 canSubmit

useEffect(() => {
    if (canSubmit) {
        post(url).finally(() => {
            setCanSubmit(false)
        })
    }
},[canSubmit])
零時差 2022-09-19 01:39:46

把 setCanSubmit 暴露出来就可以了

function HookExample(initialValue = false) {
    const [canSubmit, setCanSubmit] = useState(initialValue)
    useEffect(() => {
       if(!canSbumit) return
       post(url)    
    },[canSubmit])
    
    return setCanSubmit

}

// 输入框 onChange 事件
   const handleInputChange = (e) => {
        const value = e.target?.value
        if(value 格式正确) {
            setCanSubmit(true)
        }
   }
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文