【发布时间】:2021-12-01 19:11:06
【问题描述】:
所以我需要在我的 formData 中将信用卡到期日期拆分为两个单独的值。
这是我如何设置组件。
const [ formData, setFormData ] = useState({
email: '',
password: '',
username: '',
card_num: '',
cvv_code: '',
cc_exp: '',
cc_exp_year: '',
cc_exp_month,
first_name: '',
last_name: '',
})
我也在这里解构所有的formData:
const { email, password, username, card_num, cvv_code, cc_exp, cc_exp_year, cc_exp_month, first_name, last_name } = formData;
我在这里有我的 onChange 函数:
const onChange = e => {
setFormData({ ...formData, [e.target.name]: e.target.value })
}
一个
当我输入 cc_exp 的到期日期时,我得到了正确的 MM/YY 格式,但我需要将值拆分为 cc_exp_month 和 cc_exp_year。所以我的问题是,在 / 处拆分字符串的最佳位置在哪里,然后如何将它们添加到 formData 中的这些值中。
我已经尝试在 onSubmit 函数中使用 setFormData 来简单地在事后添加值:
const onSubmit = e => {
e.preventDefault();
setFormData(formData => ({
...formData, // shallow copy previous state
cc_exp_month: cc_exp.split('/')[0], // add new property values
cc_exp_year: cc_exp.split('/')[1],
username: email
}));
dispatch(createMembership(formData, id));
}
我认为在我发送数据之前最好的方法是 onSubmit。这样我就不必将函数链接在一起,因为我真的不确定在哪里添加它。因此,在设置 cc_exp 并且所有表单数据都存在之后,我试图拆分该值,然后在提交数据之前将其应用于这些其他值 cc_exp_month 和 cc_exp_year。但是当我点击提交时,月份和年份不显示。但是,如果我要单击提交两次(没有人会这样做),那么数据会在 formData 中正确显示。所以它就像 setFormData 一样不想在 onSubmit 中添加新的 exp 数据。
【问题讨论】:
标签: reactjs react-hooks use-state