reactjs - 第一次点击时反应钩子状态没有更新
问题描述
我是新手,我遇到了 useState 钩子的问题。我有一个来自(使用useForm),我想要实现的是当用户单击提交按钮时,它会将表单数据发送到api并从api收集响应然后更新状态并将更新的状态作为url重定向中的参数发送(道具。历史.push)。我唯一坚持的是我的 useState 钩子在第一次点击时没有更新。我发现了类似的问题,但这并没有解决我的问题,或者有人可以说我不太了解它,请帮忙。
import React, {useState, useRef, useCallback, useEffect} from 'react'
import {useForm} from 'react-hook-form'
import CreateProcessComponent from '../../components/ProcessComponents/CreateProcess/CreateProcessComponent.jsx'
import {createProcessApiCall} from '../../services/ProcessService'
function postData (dt, err, param){
var new_param = JSON.stringify(param)
const result = createProcessApiCall(new_param)
.then(response => {
dt(response.data.data)
console.log(response.data.data)
})
.catch(e => {
console.log(e)
err(true)
})
}
export default function CreateProcessContainer(props){
const {register, handleSubmit, errors} = useForm()
const [postApiData, setApiData] = useState({})
const [isError, setIsError] = useState(false);
const sendRequest= (data) => {
let prm = {"ProcessName":data.processName,"ProcessDescription":data.processDescription,"Code":"null", "CreatedBy":"null"}
postData(setApiData, setIsError, prm)
props.history.push({pathname:'/test',state:{postApiData}})
}
return (
<main>
{isError && <div>Something went wrong ...</div>}
{ (!isError) ?
<CreateProcessComponent
register={register}
handleSubmit={handleSubmit}
errors={errors}
onSubmit={sendRequest}/>
:
null }
</main>
)
}
在上面的代码中 CreateProcessComponent 是我的表单。请让我知道我做错了什么以及我需要添加哪些修复
解决方案
尝试这个:
const main = useRef(null);
if(main) {}
<main ref={main}>
PS:没感觉
// set isMounted to false when we unmount the component
useEffect(() => {
return () => {
isMounted.current = false
}
}, [])
您的组件将销毁,为什么设置isMounted
?
推荐阅读
- python-3.x - 将扫描图转换为数字图
- spring - 来自带有 @ControllerAdvice 注释的全局 @ExceptionHandler 的 Http 状态代码
- amazon-web-services - AWS:在 lambda 函数中使用 cognito 生成的 id 令牌和访问令牌
- ios - iOS:在显示带有搜索结果的表格视图时,函数 (IBAction)inputChanged:(id)sender 非常慢
- android - Android 应用未在 alpha 测试模式下发布
- android - 我可以在批准后不发布的情况下推出新版本的 Android 应用程序吗?
- xaml - 有没有办法在详细信息更改时自动更改主详细信息项目中选定的菜单页面?
- node.js - 节点js猫鼬在嵌套混合属性中找到?
- php - WordPress 使所有帖子类型和分类法都适用于分页索引
- python - 恢复被 Python/Spyder 覆盖的脚本