javascript - React - 如何将对象推送到嵌套在数组中的数组
问题描述
我目前正在学习 React,所以如果我没有使用正确的术语,我深表歉意。
我正在创建一个具有多列的项目,每列都有一个“添加”按钮。此按钮弹出打开一个模式,用户可以在其中输入一串文本。然后我希望返回此文本字符串并将其显示在特定列中。我在尝试确定如何更新 setState 时遇到了麻烦,具体取决于我希望引用的列的索引。
我从模式返回列 ID,然后将该列 ID 与状态中设置的列的 ID 进行比较。我想知道如何获取我获得的列 [index] 并使用它在 addCard 方法中使用卡片对象更新卡片数组。
class Board extends React.Component {
constructor(props) {
super(props);
this.state = {
modalOpen: false,
columns: [
{
title: '',
id: uuid(),
cards: []
},
{
title: '',
id: uuid(),
cards: []
},
{
title: '',
id: uuid(),
cards: []
}
],
currentColumnID: null
};
}
openModal = (colID) => {
this.setState(state => {
return {
modalOpen: true,
currentColumnID: colID
};
});
};
closeModal = () => {
this.setState(state => {
return {
modalOpen: false
};
});
};
addCard = (cardValue) => {
const card = {
value: cardValue,
id: uuid()
};
// compare column IDs to currentColumnID
// return the index of whichever column is "true"
const index = this.state.columns.map((column, i) => {
if(column.id === this.state.currentColumnID) {
return i;
}
});
// add card to returned column
this.setState(state => {
return {
modalOpen: false
};
});
};
解决方案
在你的addCard
方法中。找到列,然后将卡片推入阵列。
addCard = (cardValue) => {
const card = {
value: cardValue,
id: uuid()
};
// Find the column
const column = this.state.columns.find(column => {
return column.id === this.state.currentColumnID;
})
// add card to returned column
if (column != null) {
column.cards.push(card);
}
this.setState(state => {
return {
modalOpen: false
};
});
};
推荐阅读
- sql - 当 max(BCASTdate -120)<= date 时更新字段
- python - 我遇到 SSL 请求模块错误的问题?
- java - 无法连接到服务器。java.net.ConnectException:连接被拒绝:连接
- node.js - MongoError:用户不允许创建二维索引
- azure-devops - 加载 YAML 构建管道时出错。服务连接名称 00000000-0000-0000-0000-000000000000 不明确
- opengl-es - 有没有办法像 GLSL 中的纹理一样通过坐标访问矢量?
- html - 禁用样式(垫扩展面板)
- javascript - javascript对象转换表
- angular - 如何在 Angular 7 中实现粒子 JS?
- objective-c - 如何从 react native 调用 swift native 函数?