reactjs - 表单提交后显示成功或错误消息(React JS)
问题描述
我正在使用 Next.Js (React)、Typescript 和 Chakra UI 创建一个联系表单。
我想根据后端的响应在表单提交后显示成功或错误消息。
我为此目的使用 useState() 并有条件地呈现消息,但这似乎不起作用,
我收到此错误
对象作为 React 子级无效。如果您打算渲染一组孩子,请改用数组
这是我的代码导致错误的部分:
export const ContactForm = () => {
const [status, setStatus] = useState<string>("");
// function to handle form submission
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
// some stuff here
const { error } = await res.json();
// error handling
if (error) {
setStatus("error");
return;
}
setStatus("success");
}
return (
// form body here
// here it's failing
<div>
{status === "success" ? (
<SuccessMessage>{"Message sent successfully"}</SuccessMessage>
) : (
<ErrorMessage>{"An error occured"}</ErrorMessage>
)}
</div>
// submit button
);
};
SuccessMessage 和 ErrorMessage 是自定义组件
在此处查看错误:
我尝试过的其他一些方法不起作用:
const [success, setSuccess] = useState<boolean>(false);
const [error, setError] = useState<boolean>(false);
if(error) {
setError(true);
return;
}
setSuccess(true);
// conditional render
{ success && (
<SuccessMessage>{"success"}</SuccessMessage>;
)}
{ error && (
<ErrorMessage>{"error"}</ErrorMessage>;
)}
这也导致了同样的错误,Objects are not valid as a React child。
如果您打算渲染一组孩子,请改用数组
有什么办法可以做到这一点,任何帮助将不胜感激:)
解决方案
推荐阅读
- android - 工具栏未在创建时或在 XML 中设置高度
- python - Python GUI 显示带有选项的 PDF 文件
- java - Spring Boot:如何初始化一类常量值
- javascript - VueJS 使用 $set 或 Vue.set 更新 {} 不起作用
- sql - 在没有持久数据库连接的情况下填充 RowSource 和 RecordSource
- r - R data.frame 因子而不是级别
- laravel - 一个redis实例可以订阅其他redis实例吗?
- java - 使用 Jboss 阅读 PropertyPlaceholderConfigurer 类路径 Spring
- javascript - 谷歌图表列名覆盖
- swift - 自定义沙盒 NSSavePanel 警报