我正在使用需要修改数量的产品列表,但无法使用(+)和(-)按钮修改包含数量的inputText
感谢您的帮助。.谢谢
我无法使用stados,因为您一次只能更改一行
我想知道一个好方法,这样当我按下按钮时,每行中的数字都会被修改并尝试使用状态,但是我会更改所有输入的内容
代码:
<View style={styles.containerPro}>
<List containerStyle={{borderTopWidth: 0,
borderBottomWidth: 0}}
key={this.state.coins.length}
dataSource={this.state.number}>
<FlatList
extraData={this.state}
data={this.state.coins}
keyExtractor={(item) => item.id}
renderItem={({item}) => {
let num = 0;
this.state={
numb :num,
};
let url = 'http://laeconomiadelsur.com/upload/' + item.foto;
const tableData = [
[<View>
<Image
source={{uri: url}}
style={{
width: 50,
height: 70,
}}/>
</View>,
],
[<View style={styles.cellIcons}>
<Text
style={styles.textCells}>
{item.nombre}</Text>
<Text
style={styles.textCellsDescription}>
{item.descripcion}</Text>
<Text
style=
{styles.textCellsPrecio}>${item.precio.toLocaleString()}
</Text>
</View>,
],
[<View>
<Text style={styles.cantidad1}>subtotal:
<Text>$300000</Text></Text>
<View style={styles.buttonsAdd}>
<TouchableOpacity
style={styles.button1}
navigation={this.props.navigation}
onPress={()=>{
num = num-1;
console.log(num)
}}
>
<Text>-</Text>
</TouchableOpacity>
<TextInput
style={styles.textSum}
value={this.state.numb.toString()}
placeholder="0"
underlineColorAndroid={"transparent"}
/>
<TouchableOpacity
style={styles.button2}
navigation={this.props.navigation}
onPress={(num) => {
num = num +1;
console.log(num)
}
}
>
<Text>+</Text>
</TouchableOpacity>
</View>
<Text style={styles.cantidad}>cantidad</Text>
</View>,]
];
return (
<View style={{flex: 1}} key={item.id}>
<Table style={styles.table} borderStyle={{borderWidth: 2, borderColor: 'white'}}
key={item.id}>
<Cols data={tableData} flexArr={[1, 2, 2]} style={styles.cells}
key={item.id}/>
</Table>
</View>
);
}}
/>
</List>
</View>
答案 0 :(得分:1)
为tableData创建一个单独的组件。并使用
shouldComponentUpdate()
在tableData组件内部,仅呈现所需的组件。 有关生命周期https://reactjs.org/docs/react-component.html和
的文章很好读shouldComponentUpdate()
您可以从这里阅读
https://reactjs.org/docs/react-component.html#shouldcomponentupdate
答案 1 :(得分:0)