Реагируйте на Native, успешно устанавливая состояние, но желая сохранить в asyncStorage одновременно - PullRequest
1 голос
/ 14 октября 2019

У меня есть встроенный модуль приложения для отслеживания статистики здоровья. Этот пример для веса, но когда панель инструментов загружается, появляется пустой компонент с кнопкой для запуска модального редактора. Это дает textInput, где пользователь может ввести свой вес за день, и при сохранении он сохраняет это число в состояние для этого значения, и теперь он отображается на приборной панели.

Это работает точно так, как ожидалось, но яхотите также сохранить это в asyncStorage одновременно с текущей датой. Я хочу загрузить состояние для значений, если текущая дата соответствует значению хранилища для него, но сохранить его в течение дня.

Обычно, если пользователь просыпается в понедельник и регистрирует свой вес, я хочу егоотображать в приложении весь день, но когда они открывают его во вторник, они должны снова пусто, чтобы ввести его для этого дня, а затем значение TH должно оставаться на весь день во вторник и т. д.

Что мне нужносделать отсюда, чтобы достичь этого?

import React, { Component } from 'react';
import { StyleSheet, Text,  View, Dimensions, Button, ScrollView, TouchableOpacity, TextInput, Alert} from 'react-native';
import { Pedometer } from "expo-sensors";
import {
  LineChart,
  BarChart,
  PieChart,
  ProgressChart,
  ContributionGraph,
  StackedBarChart
} from "react-native-chart-kit";
import PedometerChart from './PedometerChart';
import Icon from '@expo/vector-icons/Ionicons';
import MatIcon from '@expo/vector-icons/MaterialCommunityIcons';
import NumericInput from 'react-native-numeric-input';
import Modal from 'react-native-modal';
import moment from 'moment';



export default class Dashboard extends Component{

    state = {
    weight:'',
    currentDate: new Date(),
    markedDate: moment(new Date()).format("YYYY-MM-DD")
  };

  render() {

    const today = this.state.currentDate;
    const day = moment(today).format("dddd");
    const date = moment(today).format("MMMM D, YYYY");

    return(
      <ScrollView>
      <View style={styles.container}>

      <View style={styles.mainContainer}>
        <View style={styles.widgetContainer}>
            <MatIcon  name="scale-bathroom" size={50} />
            <Text style={styles.titleText}>Weight</Text>
        </View>
        <View style={styles.widgetContainer}>
            <Text>
              <Text style={styles.textUnderlines}>
              {this.state.weight}
              </Text>
              <Text style={styles.recordsTypes}>
              lb
              </Text>
            </Text>
            <TouchableOpacity 
                style={styles.recordButton} 
                onPress={this.toggleWeightModal}
            >
            <Text style={styles.recordText}>Record</Text>
            </TouchableOpacity>
        </View>
      </View>

      <Modal 
          isVisible={this.state.isWeightModalVisible}
          backdropOpacity={0.7}
          onBackdropPress={() => this.setState({ isWeightModalVisible: false })}
      >
        <View style={{ flex: 1 }}>
          <View style={styles.recordingModals}>
          <Text style={styles.titleText}>Weight for {date}</Text>
          <TextInput 
              value={this.state.weight}
              onChangeText={(weight) => this.setState({ weight })}
              keyboardType="numeric" 
              underlineColorAndroid="#000" 
              style={styles.modalInput} 
              placeholder="lbs"/>
          <TouchableOpacity style={styles.recordButtonModal} onPress={this.toggleWeightModal}>
          <Text style={styles.recordText}>Save Entry</Text>
          </TouchableOpacity>
          </View>
        </View>
      </Modal>
      </ScrollView>
    ) ;
  }
}

1 Ответ

0 голосов
/ 14 октября 2019

может извлечь сегодняшнюю дату и сохранить ее в переменной. сравните эту переменную и дату из состояния (this.state.today), если даты не совпадают, пустой контейнер веса.

  1. Когда контейнер весов был обновлен, обновите переменную даты, чтобы он не запрашивал вес снова в тот же день ИЛИ Если приложение работает все время, сбросьте вес контейнера в12 Ночь каждый день без петель
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...