解决react不能往setState中传key作为参数的办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决react不能往setState中传key作为参数的办法相关的知识,希望对你有一定的参考价值。

有时候我们需要每次单独设置众多state中的一个,但是,都是进行相同的操作,这时候如果每个值都要单独写一个相同的函数的话,违背了don‘t repeat yourself的原则,并给日后的维护埋下了极大的隐患。
这时我们就会想向上抽取,把每次不同的key传递给这个函数,就像下面这样:
this.state = {
  visibleA: false,
  visibleB: false,
  visibleC: false,
}
<button onClick = {this.handleClick.bind( this, "visibleA)}>
 
handleClick( key )  {
  this.setState({
    key :  fooArr,
  });
}
但是因为key不能作为参数传递,然后会无效;因为我们传递给key的实际就是字符串
=================================================我是华丽的分割线==========================================================
然后经过思考,发现可以尝试使用数组的形式,方法如下
 
this.state = {
  //设置状态
  visibleAll: [false, false,false],
}
<button onClick = {this.handleClick.bind( this, 0 )}>    //这时候可以往里面传入数组下标,然后就实现了功能的复用
handleClick( i ) {
  let fooArr = this.state.visibleAll;   
  fooArr[ i ] = !fooArr[ i ];    
  this.setState({
    visibleAll: fooArr,
  });
}
 
总结:然后不能传入key值,但是可以通过把需要操作的值放入一个数组中,这样我们就可以对整个数组中的一个值或者多个值,实现一个函数对其进行操作;实现复用功能。

以上是关于解决react不能往setState中传key作为参数的办法的主要内容,如果未能解决你的问题,请参考以下文章

react学习----不能在该位置用setstate

为啥 setState() 在我的情况下不能在 React 中工作?

React中如何实现模态框每次打开都是初始界面

React 中 setState 使用注意事项

React中setState同步更新策略

react setState