javascript - 创建一个基于 props 更改其类型并支持所有输入类型的单个输入组件是否可行?或者组件会变得复杂吗
问题描述
我正在学习 React,并决定尝试创建一个具有不同输入的表单。在为所有不同的输入类型复制粘贴标签和输入 10 次之后,我觉得我应该尝试创建一个组件,该组件将根据传递给它的道具呈现不同的输入。
我创建了以下组件,它适用于文本、密码、电子邮件、数字等输入。我这样使用它:
<FormGroup
inputType="text"
inputName="firstName"
inputPlaceholder="First Name"
</FormGroup>
这是组件:
const FormGroup = (props) => {
return (
<div className="form-group">
<label className="form-label" htmlFor={props.inputName}>
<p>{props.inputPlaceholder}</p>
</label>
<input
type={props.inputType}
name={props.inputName}
placeholder={props.inputPlaceholder}
/>
</div>
);
};
export default FormGroup;
问题是,当我开始考虑像上传、范围、复选框、日期、范围这样的输入时,我开始想知道创建一个可以处理任何输入类型的通用输入组件是否可行。也许组件会变得太大/复杂/混乱。我应该继续尝试创建这样的通用输入组件,还是尝试替代方案?
解决方案
这是可行的,但随着您添加对更多类型的支持,它变得非常复杂。
对于表单处理,您最好使用还管理输入状态的库。
Formik 是目前流行且可靠的选择 https://formik.org/
尝试浏览他们的文档,即使您决定不使用它,它也应该让您更好地了解您想要实现的目标的要求
推荐阅读
- c - 为链表实现 shell 排序?
- excel - 两个工作表之间的交叉引用
- r - 如何在“barplot”图形的栏上方添加标签?
- javascript - 添加事件侦听器在 wordpress 主题环境中的 js 中不起作用
- algorithm - 找出无法赢得比赛的玩家人数?
- go - 如何创建多个工作人员以从工作队列中获取密钥并在它们上处理一些业务逻辑?
- buffer - 输出高阻抗,重放缓冲器未定义输出和输入
- python - 有没有办法返回被点击的海龟对象?
- python - 无法使用请求获取网页内容
- multiprocessing - 具有共享内存的 Pytorch 多处理导致 matmul 慢 30 倍(只有两个进程)