如何处理 React 控制表单中的可选字段输入

时间:2021-04-02 18:26:10

标签: reactjs react-native react-redux react-hooks

假设我有一个包含 3 个字段的表单:firstNamemiddleNamelastName。字段 firstNamelastName 是必需的,但 middleName 是可选的。所以,当有人填写表单而不写他的中间名时,表单产生的对象是这样的

{
  firstName: "John",
  middleName: "",
  lastName: "Doe",
}

但我想得到类似的东西

{
  firstName: "John",
  middleName: undefined,
  lastName: "Doe",
}

当然我可以手动清理生成的对象,并将 "" 转换为 undefined,但我想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

您可以编写自定义逻辑来处理此问题:

const initialValues = {
    firstName: "",
    lastName: "",
    middleName: ""
}
// Set use state
const [values, setValues] = useState(initialValues);

const handleMiddleNameInputChange = (event) => {
    event.persist();
    if(middleName === ""){
        setValue((values)=>({
            ...values,
            middleName: "undefined"
        }));
    }else{
        setValues((values) => ({
            ...values,
            middleName: event.target.value,
        }));
    }
};