点击按钮后,我想添加新的一行到形式。我创建并导入线组件,现在点击按钮后,我想添加1到形式。
我可以写这个。但这不起作用,它甚至不会显示错误。我不知道该怎么补救
useState是一个空数组,点击按钮后,我想添加和存储新的组件。
谢谢你
const Form = () => {
const [lines, setLines] = useState([]);
const addLine = () => {
setLines(lines => [...lines, <Lines />]);
};
return (
<div>
<form>
{lines.map(line => {
{line}
})}
</form>
<button onClick={addLine}>
</button>
</div>
);
};
1条答案
按热度按时间l0oc07j21#
它不起作用,因为在
map
函数中没有return语句。你可以这样写:由于此时map函数没有改变任何内容,因此您可以使用原始数组。
但我强烈建议不要在react状态下存储元素。在当前示例中,您没有任何 prop ,但是一旦您这样做,就会非常容易出现由过时 prop 引起的bug。
相反,您的状态应该是描述页面所需的最小数据量,然后应该在呈现期间创建元素。例如,如果每行都有一些相关的数据,继续使用数组,但只存储数据而不是元素:
或者,如果没有关于每一个的数据,那么您可以将状态更改为只是一个数字: