React Native - получить данные о состоянии без перезагрузки экрана - PullRequest
0 голосов
/ 29 марта 2020

У меня проблема с моим кодом, после вставки значений из 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
...