У меня проблема с моим кодом, после вставки значений из onPress в базу данных он не обновляет состояние немедленно, мне нужно перезагрузить экран, чтобы увидеть обновленное состояние. это моя попытка:
Допустим, у нас есть состояние, называемое корзиной, которая содержит несколько объектов
constructor(props){
super(props)
this.state = {
cart:[],
}
}
Это кнопка с onPress
для вызова функции вставки
<TouchableWithoutFeedback onPress={()=> {this.setItems(item.id, item.name, item.price)}}>
<Text>Insert Data</Text>
</TouchableWithoutFeedback>
Это функция setItems
:
async setItems(itemId, itemName, itemPrice){ // Function to be called from onPress
if(this.state.cart.every(item => item._id !== itemId)){ // Chech in State and do not insert same id
await db.insertAsync({ // Insert values coming from the function to database
_id: itemId,
name: itemName,
price: itemPrice,
})
await db.findAsync({}, (err, docs)=> {
this.setState({cart:docs})
})
}
}
, чтобы убедиться, что состояние хранит данные в базе данных после загрузки экрана:
componentDidMount(){
setTimeout(() => {
db.findAsync({}, (err, docs)=> {
this.setState({cart:docs})
})
}, 0)
}
Надеюсь, мое объяснение было ясным , В ожидании совета
- В своем коде я использовал базу данных response-native-local-mongodb