reactjs - React - 使用状态动态添加输入标签
问题描述
当我单击添加输入按钮时,我想向我的网页添加新的输入标签。
试图:
import React, { useState } from "react";
import "./styles.css";
export default function App() {
const [addInput, setAddInput] = useState(false);
const handleClick = () => setAddInput(true);
return (
<div className="App">
<button onClick={handleClick}>Add Input</button>
{addInput ? <input type="text" /> : ""}
</div>
);
}
如何使上述代码能够动态添加新输入?
解决方案
一种做你想要的方法。
const [state, setState] = useState([]);
const handleClick = () => {
let inputs = Object.assign([], state);
inputs.push(<input type='text' key={inputs.length} />);
setState(inputs);
}
return (
<div className="App">
<button onClick={handleClick}>Add Input</button>
{state}
</div>
);
你应该知道, addedinput
是Uncontrolled Components。
为了帮助您更多地了解可能的解决方案,这里有另一种方法:
const [state, setState] = useState(0);
const handleClick = () => setState(state + 1);
const generateInputs = () => {
const inputs = [];
for (let i = 0; i < state; i++) inputs.push(<input key={i} type='text' />);
return inputs;
}
return (
<div className="App">
<button onClick={handleClick}>Add Input</button>
{generateInputs()}
</div>
);
推荐阅读
- wordpress - 如何从输出列表中简单地删除特定的 User_ID
- asp.net-web-api2 - API 控制器是否应该尝试捕获所有 500 个内部服务器错误?
- sql - 如何使用两个表创建 PIVOT
- r - 在R中的嵌套列表中应用
- jenkins - Jenkins Pipeline 错误地从 groovy 方法中接受多个值
- android - Android ArCore:相对于地板平面的PointCloud点坐标?
- git - Git克隆自动化错误权限被拒绝(公钥)
- c++ - 打印向量的向量
- webpack - 从 webpack 监视中排除目录
- python - 随机选取数据而不在索引中重复,并从中创建一个新列表