javascript - 基于所选儿童数量的动态年龄字段
问题描述
我正在尝试创建一个表单字段来获取成人和儿童的数量。根据孩子的数量,我需要显示一个选择字段来了解这些孩子的年龄。我可以创建一个用于添加和删除成人和儿童数量的字段,并且可以根据儿童总数显示年龄字段,但无法保存他们的年龄。
这是我的做法
const Form = () => {
return (
<>
<Formik
initialValues={{
traveller: {
adult: 1,
children: 0,
childAge: []
}
}}
>
{({ handleSubmit, values }) => {
return (
<>
<form onSubmit={handleSubmit}>
{JSON.stringify(values, null, 2)}
<TravellerField values={values} />
</form>
</>
);
}}
</Formik>
</>
);
};
export default Form;
const Index = ({ values }) => {
return (
<>
<Dropdown>
<Dropdown.Header style={{ width: 400 }}>
{() => {
return (
<div>
<Button type="button">
{values.traveller.adult} adult
{values.traveller.children} children
</Button>
</div>
);
}}
</Dropdown.Header>
<Dropdown.Menu
menuStyle={{
top: "40px",
width: 400,
left: 0,
right: 0
}}
>
<Dropdown.Item>
<Wrapper>
<Inline>
<Text>Adult</Text>
<Field name="traveller.adult" component={QuantityField} />
</Inline>
<Inline>
<Text>Children</Text>
<Field name="traveller.children" component={QuantityField} />
</Inline>
{values.traveller.children > 0 &&
Array.from({ length: values.traveller.children }, (_, i) => {
return (
<React.Fragment key={i}>
<Field name="traveller.childAge" component="select">
<option />
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
</Field>
</React.Fragment>
);
})}
</Wrapper>
</Dropdown.Item>
</Dropdown.Menu>
</Dropdown>
</>
);
};
为了更清楚我的尝试,我创建了一个沙箱,这里是它的链接
https://codesandbox.io/s/green-moon-pehc1?file=/src/Form.js:115-655
如果您查看它的旅行者字段,这正是我想要的https://www.expedia.com/?pwaLob=wizard-hotel-pwa-v2 。
解决方案
推荐阅读
- macos - MacOS终端 - 错误的光标位置
- css - 您可以将详细信息元素设置为显示网格吗?
- c# - 为什么我的编译器警告只有一个被禁止?
- python - 为什么 datetime 为同一时区提供不同的时区格式?
- python - 可以自动将新数据从服务器下载到我的本地备份的脚本
- android - 如何更新应用程序使用的外部文件?
- python-3.x - 如何更改 exec() 函数中变量的值?
- vba - excel vba中带有自动完成/建议的下拉列表
- microsoft-graph-api - OneDrive 中的节流
- c# - 使用 SqlDatRecord 结果列表插入行 数据库中的外键错误