reactjs - 如何将数据传递给新添加的数组元素组件
问题描述
如何通过 onAddClick 道具将附加数据传递给新添加的数组元素组件?onAddClick: (event) => void: 向数组添加新项目的函数。
我只需要复制项目并使用单击的数据创建新项目。
这就是我删除项目的方式
const handleRemove = () => {
if (typeof formContext.removeObject === 'function') {
formContext.removeObject(index, props.onDropIndexClick(index), title);
} else {
props.onDropIndexClick(index)();
}
};
这就是我渲染它们的方式
export function CardArray(props) {
const classes = useStyles();
const { title, items, canAdd, onAddClick, formContext } = props;
return (
<Card className={classes.wrapper}>
<CollapseTitle title={title}>
{items.map(element => arrayItem(element, formContext, classes,
title))}
</CollapseTitle>
{canAdd && (
<CardActions>
<Fab
className={classes.addObjButton}
color="primary"
size="small"
onClick={onAddClick}
>
<AddIcon />
</Fab>
</CardActions>
)}
</Card>
);
}
解决方案
updater
修改状态时可以使用函数:
const onAddClick = () => {
this.setState(prevState => ({
items: [...prevState.items, newItem]
}))
}
你也可以concat
因为它返回一个新数组:
const onAddClick = () => {
this.setState({
items: this.state.items.concat([newItem])
})
}
或者如果您熟悉ES6
(我认为您这样做),那么您可以使用Spread Operator
:
const onAddClick = () => {
this.setState({
arrayvar: [...this.state.arrayvar, newelement]
})
}
推荐阅读
- javascript - 如何从某个索引开始映射嵌套 json 并将其映射回该 index-1 值
- swift - Swift:我的destinationVC segue 显示为零
- jmeter-3.2 - 未捕获的异常 java.lang.stackoverflowerror
- javascript - 有没有办法在单击自定义按钮之前上传文件,然后使用 ajax 将其发送到控制器操作方法?
- python - DRF ImageField 行为不一致
- javascript - 为什么 await 不等待 setTimeOut
- heroku - 在 Heroku 中连接 AWS RDS 时找不到驱动程序
- angular - 如何将 http:// 重定向到 https://,如 firebase 托管
- flutter - 标签栏中的抽屉也显示在 sliver 应用栏中
- java - 如何修复此错误“渲染期间引发异常:找不到维度资源匹配值 0x1050050”?