Javascript 向数组添加对象的最佳实践
将对象添加到数组的最佳做法是什么。首先,您需要使用Javascript 向数组添加对象的最佳实践,javascript,Javascript,将对象添加到数组的最佳做法是什么。首先,您需要使用状态进行一些更正: this.state = { post: { question: '', img: '', postId: '', userId: '' }, feed: [], } 在未来,POST将是对象的数组,例如: this.state = { posts: [], feeds: [], } 使用this.setStat
状态进行一些更正:
this.state = {
post: {
question: '',
img: '',
postId: '',
userId: ''
},
feed: [],
}
在未来,POST将是对象的数组
,例如:
this.state = {
posts: [],
feeds: [],
}
使用this.setState
向帖子中添加新帖子,同时请记住状态是不可变的:
this.state = {
posts: [
{ postid: 1, question: "question" },
{ postid: 2, question: "question" }
]
}
有关状态的详细信息
示例JSFiddle
类示例扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
员额:[],
提要:[],
}
}
getName=()=>{
常量名称=['1','2','3','4','5','6']
const random=Math.floor(Math.random()*names.length);
返回名称[随机]
};
getId=()=>Math.floor(Math.random()*(9999-1))+1;
makePost=()=>({id:this.getId(),name:this.getName()});
createPost=()=>{
这是我的国家({
//Rest操作符确保新对象具有合并的属性和值。
//需要“transform object rest spread”巴别塔插件
posts:[…this.state.posts,this.makePost()]
//或者像这样:this.state.posts.concat(this.makePost())
})
};
render(){
返回(
创建帖子
{JSON.stringify(this.state,null,2)}
);
}
}
ReactDOM.render(
,
document.getElementById('容器')
);代码>
首先,您需要对状态进行一些更正
:
this.state = {
post: {
question: '',
img: '',
postId: '',
userId: ''
},
feed: [],
}
在未来,POST将是对象的数组
,例如:
this.state = {
posts: [],
feeds: [],
}
使用this.setState
向帖子中添加新帖子,同时请记住状态是不可变的:
this.state = {
posts: [
{ postid: 1, question: "question" },
{ postid: 2, question: "question" }
]
}
有关状态的详细信息
示例JSFiddle
类示例扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
员额:[],
提要:[],
}
}
getName=()=>{
常量名称=['1','2','3','4','5','6']
const random=Math.floor(Math.random()*names.length);
返回名称[随机]
};
getId=()=>Math.floor(Math.random()*(9999-1))+1;
makePost=()=>({id:this.getId(),name:this.getName()});
createPost=()=>{
这是我的国家({
//Rest操作符确保新对象具有合并的属性和值。
//需要“transform object rest spread”巴别塔插件
posts:[…this.state.posts,this.makePost()]
//或者像这样:this.state.posts.concat(this.makePost())
})
};
render(){
返回(
创建帖子
{JSON.stringify(this.state,null,2)}
);
}
}
ReactDOM.render(
,
document.getElementById('容器')
);代码>
First:post
必须是数组吗?第二:如果post
数组中有多个项目,您如何决定更改question
值的项目?每个帖子都有一个ID。这里似乎有一些可疑之处。如果post
是一个post数组,则调用它posts
,否则无需将其放入数组。其次,您正在使用setState
这一事实告诉我,该状态是组件的内部状态,这里的更新不会发出任何类型的HTTP请求。如果是这种情况,您可能应该在此处使用另一个名为Post
的组件来处理单个Post的状态,而不是尝试更新组件内状态数组。但是,如果您想这样做,则需要传递postId
(甚至是索引)进入handleChange
通知回调应该更新数组中的哪个帖子。你不能简单地执行arrayName.push(对象)操作吗代码>?首先:post
必须是数组吗?第二:如果post
数组中有多个项目,您如何决定更改question
值的项目?每个帖子都有一个ID。这里似乎有一些可疑之处。如果post
是一个post数组,则调用它posts
,否则无需将其放入数组。其次,您正在使用setState
这一事实告诉我,该状态是组件的内部状态,这里的更新不会发出任何类型的HTTP请求。如果是这种情况,您可能应该在此处使用另一个名为Post
的组件来处理单个Post的状态,而不是尝试更新组件内状态数组。但是,如果您想这样做,则需要传递postId
(甚至是索引)进入handleChange
通知回调应该更新数组中的哪个帖子。你不能简单地执行arrayName.push(对象)操作吗代码>?