现在我的构造函数中有一个这样的数组:
words: ['test', 'test', 'test'],
在渲染中,我想生成一个带有文本的元素,并为每个元素切换(切换),如下所示:
const wordList = this.state.words.map((item, i) =>
<View style={styles.wordsContainer}>
<Text style={styles.pilgrimsWordText} key={i}>{item}</Text>
<Switch
style={styles.pilgrimsWordSwitch}
onValueChange={(value) => {this.setState({ toggled: value })}}
value={ this.state.toggled }
/>
</View>
)
之后我只显示返回中的元素。
元素被生成,一切看起来都很好,但是当用户按下其中一个(切换)时,所有元素都会像图片一样被启用:
元素的图片(带有文本和开关)
你会怎么做才能启用用户希望启用的一个开关(切换)?
__________ 编辑:___________ 这是我的构造函数:
constructor(props) {
super(props);
this.state = {
words: [{ id: 1, text: 'test'}, { id: 2, text: 'test'}, {id: 3, text: 'test'}],
textInputValue: '',
}
}
现在地图看起来像这样:
const wordList = this.state.words.map((item, i) =>
<View style={styles.wordsContainer}>
<Text style={styles.pilgrimsWordText} key={item.id}>{item.text}</Text>
<Switch
style={styles.pilgrimsWordSwitch}
onValueChange={(value) => {this.setState({ toggled: { [item.id]: value }})}}
value={ this.state.toggled[item.id] }
/>
</View>
)
这是错误: