Javascript ReactJs:如何更新state的属性

Javascript ReactJs:如何更新state的属性,javascript,reactjs,Javascript,Reactjs,我正在尝试更新状态中存储的一行数据的isSelected属性,该属性不更新。有人能告诉我最好的方法吗 var selectedIdsPush = []; var selectedIdsPush = this.state.contacts.slice(); for(var i=0;i<selectedIdsPush.length;i++) { var idAsNumber = parseInt(id);

我正在尝试更新状态中存储的一行数据的isSelected属性,该属性不更新。有人能告诉我最好的方法吗

        var selectedIdsPush = [];
        var selectedIdsPush = this.state.contacts.slice();
        for(var i=0;i<selectedIdsPush.length;i++)
        {
            var idAsNumber = parseInt(id);

            if (page.state.contacts[i].id === idAsNumber) {
                page.state.contacts[i].isSelected = true;
                break;
            }

        }
var selectedspush=[];
var selectedspush=this.state.contacts.slice();

for(var i=0;iReacts希望消费者
setState
,而不是直接分配属性。在本例中,我们可以使用以下方法构建和分配新的
联系人
列表:

var idAsNumber = parseInt(id);
var newContacts = this.state.contacts.map(function (contact) {
  if (contact.id === idAsNumber) {
    contact.isSelected = true;
  }
  return contact;
});

this.setState({ contacts: newContacts });

Reacts希望消费者
设置状态
,而不是直接分配属性。在本例中,我们可以使用以下方法构建并分配新的
联系人
列表:

var idAsNumber = parseInt(id);
var newContacts = this.state.contacts.map(function (contact) {
  if (contact.id === idAsNumber) {
    contact.isSelected = true;
  }
  return contact;
});

this.setState({ contacts: newContacts });

该属性可能会更新,但不会反映在UI中,因为不会重新呈现应用程序

您可以调用
this.forceUpdate()
来强制重新渲染

或者更可能应该使用
this.setState()


我目前很难确定何时/何地使用状态,因为它显然是不建议的。有关详细信息,请搜索
react avoid state

属性可能会更新,但不会反映在UI中,因为您的应用程序不会被重新呈现

您可以调用
this.forceUpdate()
来强制重新渲染

或者更可能应该使用
this.setState()

我目前很难确定何时/何地使用状态,因为它显然是不建议的。有关详细信息,请搜索
react avoid state