处理reactjs中的状态

时间:2017-03-12 21:35:05

标签: javascript reactjs

我在地图中有一个按钮,地图正在运行3次,所以有3个按钮,当点击它时应该将状态更改为true或false以显示或隐藏标题文本,但是当我点击一个按钮时它显示所有三个文本。为什么会这样?以及如何处理这一点,以便点击一个按钮不应该触发所有按钮

@Entity
public class User {

@Id
private long id;

@Column(name = "username")
private String username;

@Column(name = "email")
private String email;

@Column(name = "password")
private String password;

}

像这样的东西

2 个答案:

答案 0 :(得分:0)

这是事物的组合。例如,您已将相同的事件处理程序附加到所有按钮,因此在单击任何按钮时会触发相同的逻辑。并且您只有一个状态字段来处理是否显示文本,即使您有3个文本字段。根据您实际想要实现的目标,您可以通过执行以下操作来解决此问题。对事件处理程序使用内联方法,并有多个字段来处理可见文本的状态。

更新现在基于任意大小的数组

设置状态数组

我没有检查过这个,但可以修复这样的事情:

SELECT myFields
FROM myTable
WHERE (post_id = 21179) AND (meta_key LIKE 'product_shops_%')

答案 1 :(得分:0)

感谢 @John Teague 提出建议 这是工作链接http://codepen.io/Zedak/pen/RpgRoQ?editors=0011

class Example extends React.Component{
 constructor(){
  super()
   this.state={
  arr:[ 1,2,3 ],
  show : [false,false,false]
  }
this.handleShow=this.handleShow.bind(this)
}

handleShow(e,i){
  this.state.show[i]=!this.state.show[i]
  this.setState({
 show:this.state.show
 }) 

}

render(){

  return(<div>
  {this.state.arr.map((x,i)=>

 <div>
 <button onClick={ (evt) => this.handleShow(evt,i) }> click me </button>
 {this.state.show[i]? <h1> I am text inside map</h1> 
                            : false 
 }
   </div>
 )} 
  </div>
   )

 }}

 ReactDOM.render(<Example/>,document.getElementById('root'))

但我仍然想知道如何处理,如果数组很大或未知。