javascript - 隐藏选择框中已选择的选项 ReactJS
问题描述
我有 3 个选择框都填充了相同的选项值。用户可以设置安全问题,因此用户从每个选择框中选择他们想要的每个问题并回答它。我做了一个 API 调用来接收安全问题并将它们存储在一个名为“securityQuestions”的数组中。现在我想要实现的是,当用户从任何下拉列表中选择一个问题时,选择的问题对其余部分隐藏选择框,以避免用户两次回答相同的问题。这就是我显示问题和接收用户输入的方式
<div className="form-group">
<div className="col-sm-12 col-md-8 col-lg-8">
<select
className="form-control"
onChange = {onChange}
name = "question1Id"
required
>
<option value="">Select first security question</option>
{
securityQuestions ?
securityQuestions.map((question, i)=>{
return <option
value={question.id}
key={i}
>
{question.name}
</option>
})
:
null
}
</select>
</div>
</div>
<div className="form-group">
<div className="col-sm-12 col-md-8 col-lg-8">
<input
type="text"
className="form-control"
required="required"
placeholder="Answer 1"
name="answer1"
onChange={onChange}
/>
</div>
</div>
<div className="form-group">
<div className="col-sm-12 col-md-8 col-lg-8">
<select
className="form-control"
onChange = {onChange}
name = "question2Id"
required
>
<option value="">Select second security question</option>
{
securityQuestions ?
securityQuestions.map((question, i)=>{
return <option
value={question.id}
key={i}
>
{question.name}
</option>
})
:
null
}
</select>
</div>
</div>
<div className="form-group">
<div className="col-sm-12 col-md-8 col-lg-8">
<input
type="text"
className="form-control"
required="required"
onChange={onChange}
placeholder="Answer 2"
name="answer2"
/>
</div>
</div>
这是我的 onChange 函数:
const onChange =(e)=>{
let name = e.target.name;
let value = e.target.value;
setState({
...state,
[ e.target.name]: e.target.value
})
}
请我如何实现它,当从第一个选择下拉列表中选择一个选项时,它隐藏在第二个选择下拉列表中
解决方案
一种方法是过滤您的securityQuestions
. 极其天真:
{ securityQuestions &&
securityQuestions.map((question, i)=> {
if (question.id === question1Id || question.id === question2Id) {
return null;
}
return <option
value={question.id}
key={i}
>
{question.name}
</option>
})
}
推荐阅读
- r - 如何将 R 中本地作业脚本的结果附加到 Excel 文件中?
- firebase - 因为我的回报是 [{"singles": [[Object], [Object]]}]
- android - 观察变量和函数有什么区别
- angular - 使用 XPath 作为定位器时,元素不在 Angular 应用程序中
- css - CSS:显示弹性
- sql - SQL:日历表上的左连接(火花 SQL)
- reactjs - componentDidMount 中的 ReactJS 生命周期 setState
- c# - ECC p-128 未在 c# 中生成 32 字节数组签名
- android - 如果我可以将 Flow 和 StateFlow 与生命周期范围 \ viewLifecycleOwner.lifecycleScope 一起使用,那么在 ViewModel 中使用 LiveData 有什么意义
- javascript - e.preventDefault 阻止成功的提交事件