在 setState 中更改 object.item
change object.item in setState
如何通过 setState 更改 getInitialState 中对象中的项目?
例如:
getInitialState: function() {
return {list: [
{id:'1',
title: 'The Baby Boss',
year: '2017',
quality: 'Blu-ray',
stars: ['Fred Astaire, ', 'Humphrey Bogart, ', 'Marlon Brando, ', 'Richard Burton, ', 'Charlie Chaplin'],
Show: false
},
{
id:'2',
title: 'Pirates of the Caribbean: Dead Men Tell No Tales ',
year: '2016',
quality: 'HDrip',
stars: ['John Depp, ', 'Orlando Bloom, ', 'Javier Bardem, ', 'Kaya Scodelario, ', 'Brenton Thwaites'],
Show: true
}`
更清晰。我创建了 getInitialState
,然后 render
编辑了它,并在屏幕上显示了列表对象。我有按钮,我想单击它并更改其中一个对象中的 smth。通过列表中的项目,我使用 'map' 函数。结果,我正在尝试像下面的代码那样做:
this.setState({
film.Show: false
})
但是这种方式行不通。达到我的目标的哪种方法是正确的?感谢您的想法。
您需要找到您的目标项目并更新它:
someEventHandler: function(targetId) {
this.setState({
list: this.state.list.map(function(film) {
if (film.id === targetId) {
film.Show = false;
}
return film;
})
});
}
如何通过 setState 更改 getInitialState 中对象中的项目?
例如:
getInitialState: function() {
return {list: [
{id:'1',
title: 'The Baby Boss',
year: '2017',
quality: 'Blu-ray',
stars: ['Fred Astaire, ', 'Humphrey Bogart, ', 'Marlon Brando, ', 'Richard Burton, ', 'Charlie Chaplin'],
Show: false
},
{
id:'2',
title: 'Pirates of the Caribbean: Dead Men Tell No Tales ',
year: '2016',
quality: 'HDrip',
stars: ['John Depp, ', 'Orlando Bloom, ', 'Javier Bardem, ', 'Kaya Scodelario, ', 'Brenton Thwaites'],
Show: true
}`
更清晰。我创建了 getInitialState
,然后 render
编辑了它,并在屏幕上显示了列表对象。我有按钮,我想单击它并更改其中一个对象中的 smth。通过列表中的项目,我使用 'map' 函数。结果,我正在尝试像下面的代码那样做:
this.setState({
film.Show: false
})
但是这种方式行不通。达到我的目标的哪种方法是正确的?感谢您的想法。
您需要找到您的目标项目并更新它:
someEventHandler: function(targetId) {
this.setState({
list: this.state.list.map(function(film) {
if (film.id === targetId) {
film.Show = false;
}
return film;
})
});
}