javascript - 有什么方法可以为选择值设置条件语句?
问题描述
我的订单状态为“已确认”、“在途中”和“已交付”。如何设置这些状态的值以匹配我在选择选项中的值?
- 确认 - 10
- 在路上 - 20
- 已交付 - 30
在这种情况下,如果状态是“在路上”,那么之前的状态将被禁用。所以我想,也许我可以将已确认的状态设置为 10 等..
const Orders = () => { const [status, setStatus] = useState(""); const [value, setValue] = useState(); const handleChange = (e) => setValue(e.target.value); return ( <div> <form onSubmit={handleSubmit}> <FormControl> <Select onChange={handleChange} value={value}> <MenuItem value={10} disabled={value > 10}> Confirmed </MenuItem> <MenuItem value={20} disabled={value > 20}> On the way </MenuItem> <MenuItem value={30} disabled={value > 30}> On the way (Delayed) </MenuItem> <MenuItem value={40} disabled={value > 40}> Delivered </MenuItem> </Select> </FormControl> <Button type="submit">Submit</Button> </form> </div> ); };
解决方案
根据我对您问题的理解,您希望Select
根据动态status
值限制组件的可用选项。
您可以改为禁用基于状态值的选项。为此,您需要将状态“映射”到与Select
. 为简单起见,我们将使用您的 10、20、30 和 40 值。
const statusMap = {
Confirmed: 10,
"On the way": 20,
"On the way (Delayed)": 30,
Delivered: 40,
};
Orders - 使用一个status
道具并将其disabled
用于选项的属性。
const Orders = ({ status }) => {
const [value, setValue] = useState(0);
const handleChange = (e) => setValue(e.target.value);
const handleSubmit = (e) => {
e.preventDefault();
setValue(0);
};
return (
<div>
<form onSubmit={handleSubmit}>
<FormControl>
<Select onChange={handleChange} value={value}>
<MenuItem value={10} disabled={status > 10}>
Confirmed
</MenuItem>
<MenuItem value={20} disabled={status > 20}>
On the way
</MenuItem>
<MenuItem value={30} disabled={status > 30}>
On the way (Delayed)
</MenuItem>
<MenuItem value={40} disabled={status > 40}>
Delivered
</MenuItem>
</Select>
</FormControl>
<Button type="submit">Submit</Button>
</form>
</div>
);
};
用法
<Orders status={statusMap[statusValueFromAPI]} />
推荐阅读
- reactjs - 如何从 Strapi API 引用 Next JS 中的图像组件?
- javascript - 如何在 input type="checkbox" 中使用 onclick="" 执行检查/取消检查?
- firebase - 取消任何电话身份验证或谷歌身份验证的问题
- amazon-web-services - 如何使用调度程序从 AWS Security Hub 中提取数据?
- r - install.packages(ggplot2) 中的 R 版本 3.4.1 错误
- printf - OCaml 中的 Printf 参数
- mysql - 如何实现用户关系自定义的全文搜索
- javascript - 如何解决 Amplify backend-config.jason 不存在问题
- python - 调整窗口大小时,Tkinter 变慢。我可以在用户安顿下来而不是连续激活它时激活调整大小命令吗?
- python - 如何使用 Keras 从二值图像分类模型中获取类?