gpt4 book ai didi

javascript - 即使未成功,状态值也会在 onSubmit 后重置

转载 作者:行者123 更新时间:2023-11-28 14:14:04 27 4
gpt4 key购买 nike

我有一个表单,如果我提交并返回错误,我会对其进行编程以显示错误所在。仅修复错误并提交后,它失败了,因为状态正在重置并且空值被发送到 api。我将在下面展示一些代码:

const AddProject = (props) => {
const [values, setValues] = useState({
projectName: '', projectIdentifier: '', description: '', startDate: '', endDate: '', errors: {},
});

useEffect(() => {
if (props.errors) {
setValues({ errors: props.errors });
}
}, [props.errors]);

const onChange = (e) => {
const { name, value } = e.target;
console.log(values);
setValues({ ...values, [name]: value });
};

const onSubmit = (e) => {
e.preventDefault();
const newProject = {
projectName: values.projectName,
projectIdentifier: values.projectIdentifier,
description: values.description,
startDate: values.startDate,
endDate: values.endDate,
};

props.createProject(newProject);
};

在下面创建项目操作

const createProject = (project) => async dispatch => {
try {
await axios.post('http://localhost:8080/api/project', project);
window.history.back();
} catch (e) {
dispatch({
type: GET_ERRORS,
payload: e.response.data
});
}
};

export default createProject;

最佳答案

useEffect(() => {
if (props.errors) {
let temp = { ...values };
temp.errors = props.errors;
setValues(temp);
}
}, [props.errors]);

使用react hooks时,需要获取之前的状态,然后设置新的值。当您仅设置 props.errors 时,它会从您的状态中删除所有其他键值。

希望这有帮助

关于javascript - 即使未成功,状态值也会在 onSubmit 后重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58432177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com