Javascript 在React.js中设置和重置状态

Javascript 在React.js中设置和重置状态,javascript,html,reactjs,components,jsx,Javascript,Html,Reactjs,Components,Jsx,我试图在我的网页中构建一个部分,其中有四个组件显示在2X2网格中。当您单击其中一个时,框会扩展到屏幕的中心,而其他框则会淡出。我通过在几个不同的属性上调用setState来切换css类,从而解决了这一部分 我遇到的问题是,当按下关闭按钮时,重置状态,使长方体呈现其原始形状和不透明度。我在handleCloseClick函数中看到一个console.log,因此我知道它是wired属性。无论我如何循环遍历状态数组,我都无法将它们的属性更改回其原始状态。这是我的密码 class Parent ext

我试图在我的网页中构建一个部分,其中有四个组件显示在2X2网格中。当您单击其中一个时,框会扩展到屏幕的中心,而其他框则会淡出。我通过在几个不同的属性上调用setState来切换css类,从而解决了这一部分

我遇到的问题是,当按下关闭按钮时,重置状态,使长方体呈现其原始形状和不透明度。我在handleCloseClick函数中看到一个console.log,因此我知道它是wired属性。无论我如何循环遍历状态数组,我都无法将它们的属性更改回其原始状态。这是我的密码

class Parent extends Component{
  constructor(){
    super();
    this.state = 
      attrs: {[{
        id: 1,
        expand: false,
        reduced: false,
        seeText: false
    }],
    [{
        id: 2,
        expand: false,
        reduced: false,
        seeText: false
    }],
    [{
        id: 3,
        expand: false,
        reduced: false,
        seeText: false
    }],
    [{
        id: 4
        expand: false,
        reduced: false,
        seeText: false
    }]}
    this.handleClick = this.handleClick.bind(this)
    this.handleCloseClick = this.handleClick.bind(this)
  }
  /*This function works*/
  handleClick(e){
    const array = this.state.attrs
    array.map(function(element){
      if(element.id === i){
        element.reduced = false;
        element.expand = true;
        element.seeText = true;
      }else{
        element.reduced = true;
      }
    })
    this.seState({attrs: array})
  }
  /*This function will console.log but will not setState of attrs*/
  handleCloseClick(){
    const newArray = this.state.attrs
    newArray.map(function(element(){
      element.expand = false;
      element.reduced = false;
      element.seeText = false;
    })
    this.setState(attrs: newArray})
  }
  render(){
    const newEls = this.state.attrs;
    return(
      {newEls.map(function(newEl, index)){
        return <Child key={index} onClick={this.handleClick(el)} onCloseClick={this.handleCloseClick()} />
      }
    )
  }
}
请帮忙!为什么这个该死的州不改回来

有几个问题。map返回一个新数组,它不会更改现有状态。因此,您需要将其分配给一个变量以查看更改

此外,还必须在.map中返回一个值,或者使用{vs{。 手柄闭合咔嗒声{ const newArray=this.state.attrs.mapelement=>{ element.expand=false; element.reduced=false; element.seeText=false; } this.setStateattrs:newArray}
}您的newArray中存在语法错误。mapfunctionelement{element.expand=false;element.reduced=false;element.seeText=false;}并且应该是newArray.mapfunctionelement{element.expand=false;element.reduced=false;element.seeText=false;}非常感谢!