javascript - setstate 不使用动态键名更新
问题描述
我不确定为什么我的状态不会使用 errorOption = key + 'Error' 更新,然后使用 [errorOption]: true 设置状态。因为我的 formErrors 状态使用与 formDetails 相同的初始键,但末尾带有“错误”,所以我只是将它连接起来。我也尝试过使用模板文字,但在这里连接看起来更容易阅读。
我希望它验证表单以检查是否为空并将错误状态更改为 true
const defaultData = {
username: '',
password: '',
}
const defaultErrorState = {
usernameError: false,
passwordError: false,
}
const [formDetails, setFormDetails] = useState(defaultData);
const [formErrors, setFormError] = useState(defaultErrorState);
const {
username,
password
} = formDetails
const {
usernameError,
passwordError
} = formErrors
const validateForm = (inputs) => {
const checkThreshold = (currentValue) => currentValue.length > 0;
let errorOption
Object.entries(inputs).forEach(([key, value]) => {
if (!checkThreshold(value)) {
errorOption = key + 'Error'
setFormError({
...formErrors,
[errorOption]: true
})
}
})
Object.entries(inputs).every(checkThreshold)
}
const handleSubmit = (event) => {
const basicInfoValues = {
username: username,
password: password,
}
if (validateForm(basicInfoValues)){
// login stuff
} else {alert("Fill in all fields")}
}
解决方案
推荐阅读
- kotlin - TornadoFx TabPane - Side = 左侧和标签旋转样式
- r - 无法以 R 语言安装 RTextTools
- angular - 在 Angular 7 中渲染组件之前加载数据
- python-3.x - 卡在python中的矩阵加法
- reactjs - 在 React drop zone 组件中,如何默认拥有一个图像?
- bash - 捕获所有 bash 命令作为自定义运行器的参数
- bitbucket - bitbucket ci cd 管道 ssh 连接失败
- c - C和静态代码分析:这比memcpy安全吗?
- python-3.x - Google Assistant SDK 不读取我的邮件
- python - 如何每次创建一个唯一的字母数字 id 并确保它不存在于我使用 python 的现有列表中?