reactjs-为动态创建的按钮创建切换

时间:2018-10-23 16:46:12

标签: javascript reactjs

当前,我遇到JS / React / React-Native问题。我从API中提取类别,并从结果中制作按钮(它们通常会根据URL中的不同变量进行更改)。我用于执行此操作的代码如下:

const cats = singles.map((d) => {
return (
  <TouchableOpacity key={d} style={styles.Settingcats}><Text style={{color: '#f55f44'}}>{d}</Text></TouchableOpacity>
)}

使用动态生成的按钮,我希望它们能够在应用程序中进行切换。当我尝试通过以下代码利用状态时:

const cats = singles.map((d) => {
return (
  <TouchableOpacity key={d} onPress={ _ => this.changeStyle} style={this.state.style === 0 ? styles.Settingcats : styles.SelSettingcats}><Text style={{color: '#f55f44'}}>{d}</Text></TouchableOpacity>
)}

并意识到,由于这是指所有按钮的一种状态,因此它将更改所有按钮样式。因此,我尝试在盒子的另一端进行思考,并考虑使用ID作为状态名称,创建状态,并通过外部函数利用该状态来更改其值。

const cats = singles.map((d) => {
return (
  <TouchableOpacity key={d} onPress={ _ => this.changeStyle(d)} style={this.state([d]) === 0 ? styles.Settingcats : styles.SelSettingcats}><Text style={{color: '#f55f44'}}>{d}</Text></TouchableOpacity>
)}
changeStyle(d){
  this.setState({
    [d] : 1
})}

由于状态被当作函数使用而抛出错误。

我可以采用哪些方法使动态创建的按钮具有各自独立的切换事件?

我尝试过的其他方法:自定义开关,material-UI,但在切换按钮具有独特功能时,我陷入了同样的问题。

2 个答案:

答案 0 :(得分:1)

与其尝试在顶层管理状态列表,不如将TouchableOpacity移到一个内部处理切换状态的组件中。

(.*)

您可以呈现这些列表,并且每个列表都独立于其他列表管理自己的切换状态。

以下是一个小提琴示例:https://jsfiddle.net/n5u2wwjg/220149/

答案 1 :(得分:0)

我用来实现这一目标的方法,@ simbathesailor对此表示感谢

我利用状态中的变量来动态创建状态,我可以通过使用这些状态来判断按钮是“开”还是“关”

this.state[d]

其中d是我用TouchableOpaque组件创建的动态变量。