我出于学习目的而制作了一个电子商务应用程序。我在购物车页面中使用textInput来更新数量,现在我正在使用react-native-numeric-input。
我正在更新react-native-numeric-input的onChange数量,在正常测试时它可以正常工作,但是当我添加代码以更新数据库中的数量时,它无法正常工作... 这里我附上了应用程序异常行为的视频: Visit link to watch video
这是我的数字输入组件代码:
<NumericInput
totalHeight={35}
totalWidth={80}
validateOnBlur={false}
initValue={qtyN}
separatorWidth={0}
rounded={true}
textColor='#2e6153'
borderColor='#0000'
inputStyle={{
backgroundColor: "#fff",
borderWidth: 1,
borderColor: '#2e6153',
borderStyle: 'solid',
}}
containerStyle={{
backgroundColor: '#2e6153',
borderWidth: 1,
borderColor: '#2e6153',
borderStyle: 'solid',
}}
iconStyle={{
color: '#fff',
}}
leftButtonBackgroundColor='#2e6153'
rightButtonBackgroundColor='#2e6153'
minValue={1}
maxValue={999}
onChange={(value) => this.qtyNumHandle(value, data.item.id)}
/>
以及我在onChange上使用的功能:
qtyNumHandle = async (value, id) => {
console.log("qtyNum handler");
console.log(value)
console.log(id)
try{
let user_id = await AsyncStorage.getItem(ID);
console.log(user_id);
let updateProduct = await fetch(`http://website.com/api/cart/updatecart?productid=${id}&userid=${user_id}&qty=${value}`, {
"method": "POST",
"headers": {
"cache-control": "no-cache",
},
});
let updateProductRes = await updateProduct.json();
console.log(updateProductRes);
this.fetchCartProduct();
}catch(errors){
console.log(errors);
}
}
请告诉我我做错了什么。如果我的代码正确,那么为什么会出现此问题。
答案 0 :(得分:0)
是的.. !!我找到了解决方案。
问题是我没有使用价值道具。
这是我的NumericInput新代码:
<NumericInput
value={this.state.cartTotal[data.index].qty}
// above the state I've used is containing the array data of my cart products
// and I used [data.index] because this NumericInput is in FlatList.
// so to get the quantity of perticular I used it array[data.index].qty
totalHeight={35}
totalWidth={80}
validateOnBlur={false}
initValue={this.state.cartTotal[data.index].qty}
separatorWidth={0}
rounded={true}
textColor='#2e6153'
borderColor='#0000'
inputStyle={{
backgroundColor: "#fff",
borderWidth: 1,
borderColor: '#2e6153',
borderStyle: 'solid',
}}
containerStyle={{
backgroundColor: '#2e6153',
borderWidth: 1,
borderColor: '#2e6153',
borderStyle: 'solid',
}}
iconStyle={{
color: '#fff',
}}
leftButtonBackgroundColor='#2e6153'
rightButtonBackgroundColor='#2e6153'
minValue={1}
maxValue={999}
onChange={(value) => this.qtyNumHandle(value, data.item.id)}
/>
这是我在onChange上使用的功能(此功能没有更改):
qtyNumHandle = async (value, id) => {
console.log("qtyNum handler");
console.log(value)
console.log(id)
try{
let user_id = await AsyncStorage.getItem(ID);
console.log(user_id);
let updateProduct = await fetch(`http://website.com/api/cart/updatecart?productid=${id}&userid=${user_id}&qty=${value}`, {
"method": "POST",
"headers": {
"cache-control": "no-cache",
},
});
let updateProductRes = await updateProduct.json();
console.log(updateProductRes);
this.fetchCartProduct();
}catch(errors){
console.log(errors);
}
}
希望这会对其他人有所帮助。