我正在尝试以表单的形式加载从 API 获得的一些数据,但我的状态挂钩似乎做错了什么。
在下面的代码中,我使用挂钩来定义员工和员工 ID。之后,我尝试使用useEffect
类组件来模仿 componentDidMount 函数。
进入这里后,我检查 url 中是否有参数,并使用setEmployeeId(props.match.params.employeeId)
.
问题是,我的状态值没有更新,我的整个流程崩溃了。
请记住,我宁愿为此使用函数组件。
export default function EmployeeDetail(props) {
const [employeeId, setEmployeeId] = useState<number>(-1);
const [isLoading, setIsLoading] = useState(false);
const [employee, setEmployee] = useState<IEmployee>();
useEffect(() => componentDidMount(), []);
const componentDidMount = () => {
// --> I get the correct id from the params
if (props.match.params && props.match.params.employeeId) {
setEmployeeId(props.match.params.employeeId)
}
// This remains -1, while it should be the params.employeeId
if (employeeId) {
getEmployee();
}
}
const getEmployee = () => {
setIsLoading(true);
EmployeeService.getEmployee(employeeId) // --> This will return an invalid employee
.then((response) => setEmployee(response.data))
.catch((err: any) => console.log(err))
.finally(() => setIsLoading(false))
}
return (
<div>
...
</div>
)
}