我正在運行一個示例項目。在我的項目中,我使用listView。如果我點擊向上箭頭按鈕,數值會增加,點擊向下箭頭按鈕,數值會減少。當我點擊這兩個按鈕中的任何一個時,值將在listView中的所有行中更改。如何更改listView中特定行的值。請給我任何建議。使用react-native在listView中基於rowid遞增和遞減值
這裏是我的代碼:
class Example extends Component {
constructor(props){
super(props);
this.state={
dataSource: new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}),
count:1,
}
}
incrementFunc(rowID:number, listItems){
this.setState({
count : this.state.count + 1
},()=>{
this.setState({
dataSource:new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}).cloneWithRows(array)
})
})
}
decrementFunc(rowID:number,listItems){
this.setState({
count : this.state.count- 1
},()=>{
if(this.state.count <= 1){
this.setState({
count : 1
})
}
},()=>{
this.setState({
dataSource:new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}).cloneWithRows(array)
})
})
}
listOfItems(listItems, sectionID:number, rowID:number){
return(
<View style = {styles.buttonContainer}>
<View style={styles.arrowsView}>
<TouchableOpacity onPress ={this.incrementFunc.bind(this, rowID, listItems)}>
<Image style={styles.arrowStyle} source={require('@images/up-arrow.png')} />
</TouchableOpacity>
</View>
<View style={styles.numberView}>
<Text style={{fontSize:15, color:'black'}}>{this.state.count}
</Text>
</View>
<View style={styles.arrowsView}>
<TouchableOpacity onPress ={this.decrementFunc.bind(this, rowID, listItems)}>
<Image style={styles.arrowStyle} source={require('@images/down-arrow.png')} />
</TouchableOpacity>
</View>
</View>
)
}
render(){
return(
<View style={styles.listview}>
<ListView
dataSource={this.state.dataSource}
renderRow={this.listOfItems.bind(this)}/>
</View>
);
}
}
因爲您已經爲所有項目使用了一個狀態....並且您正在減少/增加該狀態...所以它影響了所有項目。 –
什麼?你能解釋一下嗎 – Lavaraju