javascript - React TypeScript:如何使用 fetch 获取表单值和响应代码
问题描述
我已经设法将电子邮件和密码硬编码到获取请求中,但我想从表单中获取值。
另外,当我收到响应时,如何检查响应代码是 200 还是 400?
import React, { useState } from 'react';
import loading from '../images/loading.svg';
const ButtonSpinner: React.FC = () => {
const [state, setState] = useState({loading: false});
async function submitForm() {
setState({ ...state, loading: true});
const response = await fetch(`http://127.0.0.01/user/register`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({email: 'test@gmail.com', password: 'test'})
});
const content = await response.json();
setState({ ...state, loading: false});
}
return (
<span>
<label>Email</label>
<input type="input" id='email'></input>
</span>
<span>
<label>Password</label>
<input type="password" id="password"></input>
</span>
<button className="btn-join" onClick={submitForm}>
{!state.loading ? 'Join Now!' : <img src={loading} alt="loading" />}
</button>
);
}
export {ButtonSpinner};
解决方案
使用 onChange 并将用户值保存到状态。
const [formData, setFormData] = useState({email: "", password: ""})
handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setFormData({...formData, [e.target.name]: e.target.value})
}
为输入添加名称,以便 e.target.name 知道要更改的内容
<input type="input" id='email' name="email" onChange={handleChange}></input>
然后您可以重用来自 formData 的数据。如果要检查响应代码,只需 console.log(response) 并执行 if 检查 HTTP 代码。
推荐阅读
- clips - 如何避免重叠规则
- powershell - PowerShell查找今天是否在另外两天之间
- filter - 在ansible中预先添加列表的每个元素
- typescript - 如何将部分属性与类型的默认值合并并返回类型的实例
- xslt - javascript条件中的XSL属性
- bash - 行数和列数取自命令参数;如果缺少,将默认设置为 3(行)和 4(列)。使用嵌套循环 **** **** ****
- python-3.x - 在 Mac M1 上安装 Assimpcy
- c++ - 如何在有向图中找到最小成本路径
- vue.js - Vuetify CRUD 表在对话框取消时更新 UI
- javascript - 汇总再生器运行时与 Chrome 应用程序 CSP 冲突