React-Native обновляет элемент AsyncStorage

1

Мое приложение отправляет уведомление пользователю каждый раз, когда автомобиль меняет цену. Это делается с кодом, который запускается каждый час.

Код:

  backgroundData(){
      BackgroundTimer.setInterval(() => {

        AsyncStorage.getItem('key').then(JSON.parse).then(items => {
          this.setState({value: items});
        })

        if(!this.state.value == 0 || !this.state.value == null){
          const promises = this.state.value.map((item, index) =>
            fetch('URL/GetDetalhesViatura?CarID=${item[0]}')
             .then(response => response.json())
          )
          Promise.all(promises).then(viaturas => this.setState({viaturas: flatten(viaturas)}))

          const newItem = []
          this.state.viaturas.map((item, index) =>
            newItem.push([item.Preco, item.CodViatura]),
            this.setState({ stateArray: newItem })
          )

          const newItem2 = []
          this.state.value.map((item, index) =>
            newItem2.push([item[1], item[0]]),
            this.setState({stateArray2: newItem2})
          )

          var results = new Array();
          //CODE TO CHECK ARRAYS FOR DIFFERENT PRICES
          this.setState({results: results})

          if(!this.state.results == 0 || !this.state.results == null){
            const promises = this.state.results.map((item, index) =>
              fetch('URL/GetDetalhesViatura?CarID=${item[1]}')
               .then(response => response.json())
            )
            Promise.all(promises).then(viaturas2 => this.setState({viaturas2: flatten(viaturas2)}))

            this.state.viaturas2.map((item, index) =>
              PushNotification.localNotification({
                message: "Notification",
              })
            )
          }
        } else {
          console.log('empty')
        }
      }, 9999999);
  }

Сначала он извлекает текущие данные в моем AsyncStorage. Если у него есть данные, он извлекает новые данные из API, и после этого сравнивает обе даты и, если есть разные цены, он отправляет уведомление пользователю.

Проблема в том, что мне нужно обновить 'key' для каждого автомобиля (если цена изменилась) с новой ценой, или приложение будет продолжать отправлять уведомления пользователю.

Теги:
react-native

1 ответ

2
Лучший ответ

Я не мог получить то, что хотел с AsyncStorage, поэтому мне пришлось использовать обертку под названием simple-store: https://github.com/jasonmerino/react-native-simple-store

Мне пришлось изменить много кода, но потом я смог изменить нужные данные и сохранить их.

Благодаря простому хранилищу он сохраняет каждый автомобиль на отдельном массиве или объекте в одном и том же ключе, что намного легче манипулировать данными.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню