reactjs - 如何动态呈现带有条件的输入字段?
问题描述
我正在尝试使用更少的代码并动态呈现输入字段。我有 4 个输入字段的动态输出,并且有 4 个名称和数量状态。
this.state = {
input: {
name1: '',
name2: '',
name3: '',
name4: '',
amount1: '',
amount2: '',
amount3: '',
amount4: '',
},
这里我如何渲染 4 个字段:
{
[1,2,3,4].map((i) => {
return (
<div>
<p>Name{i}</p>
<p>Amount:</p>
<div>
<Input
value={this.state.input[`name${i}`]}
onChange={(event) => {
this.updatePayee(`name${i}`, event.target.value);
}}
/>
</div>
<p>Amount:</p>
<div>
<NumberInput
value={this.state.input[`amount${i}`]}
onChange={(event) => {
this.updateAmount(`amount${i}`, event.target.value);
}}
/>
</div>
</div>
)
})
}
如何根据其他状态的情况动态输出 1,2,3,4?
{this.state.input.selection == "4" && (
render 4 divs like above
)}
{this.state.input.selection == "3" && (
render 3 divs like above
)}
{this.state.input.selection == "2" && (
render 2 divs like above
)}
{this.state.input.selection == "1" && (
render 1 divs like above
)}
解决方案
您可以像这样动态地生成数组:
const elements = Array(this.state.input.selection).fill().map((v, i) => i + 1);
然后像现在一样使用
elements.map(...)
推荐阅读
- java - Android Material Design - 添加样式时出错
- sql-server - SQL Join表基于存储过程中的Id
- reactjs - 如何修复模块解析失败:意外的令牌?
- c# - 元组 lambda 语法突然在 C# 中不起作用
- c - 错误(E0852)表达式必须是指向完整对象类型的指针(通用链表)
- mysql - 如何在 django 中自定义排序顺序,如 mysql FIELD Function
- angular - 如何解决 Angular 模块导入问题?
- r - 带有几行的ggplot(随着时间的推移而发展)
- javascript - 猫头鹰轮播设置为显示无
- vb.net - 单击或选择 DaTagridview 中的单元格时,添加的行消失