пытается включить последний уровень теста из БД, когда пользователь входит в систему реагирует js - PullRequest
0 голосов
/ 08 февраля 2020

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

это кнопки

 <Button
                  onClick={() => {
                    this.changeToquiz1();
                    this.articelState();
                  }}
                >
                  Rookie
                </Button>
                <Button
                  disabled={this.state.level < STUDENT}
                  onClick={() => {
                    this.articelState();
                    this.changeToquiz2();
                  }}
                >
                  Student
                </Button>
                <Button
                  disabled={this.state.level < INTERM}
                  onClick={() => {
                    this.changeToquiz3();
                    this.articelState();
                  }}
                >
                  Intermediate
                </Button>
                <Button
                  disabled={this.state.level < EXPERT}
                  onClick={() => {
                    this.changeToquiz4();
                    this.articelState();
                  }}
                >
                  Expert
                </Button>
                <Button
                  disabled={this.state.level < MASTER}
                  onClick={() => {
                    this.changeToquiz5();
                    this.articelState();
                  }}
                >
                  Master
                </Button>

это логика c для включения / выключения

handleDisableValue = scores => {
    if (scores >= 5 && this.state.level < 4) {
      this.setState(prevState => ({
        level: this.state.level + 1
      }));
    }
   // console.log(this.state.level);
  };

это в части рендеринга

const STUDENT = 1;
    const INTERM = 2;
    const EXPERT = 3;
    const MASTER = 4;

Вызов DB для извлечения данных, которые им интересны только для ранга

    retrieveData = () => {
    fire.auth().onAuthStateChanged(user => {
      if (user) {
        var ref = fire
          .database()
          .ref("data")
          .limitToLast(1);
        //takes the last data in DB

        var userUID = fire.auth().currentUser.uid;
        var query = ref.orderByChild("ID").equalTo(userUID); //retrieves data about only the current logged in user
        console.log(userUID);
        query.once("value", snapshot => {
          let currentState = this.state.people;

          const currentUser = snapshot.val();
          for (let i in currentUser) {
            currentState.push({
              email: currentUser[i].UserEmail,
              UserAnswer: currentUser[i].UserAnswer,
              Questions: currentUser[i].Question,
              id: currentUser[i].ID,
              Score: currentUser[i].Score,
              levelRook: currentUser[i].UserLevel,
              levelStudent: currentUser[i].UserLevelStudent,
              levelIntermediate: currentUser[i].UserLevelIntermediate,
              levelExpert: currentUser[i].UserLevelExpert,
              levelMaster: currentUser[i].UserLevelMaster,
              rank: currentUser[i].RankValue
            });
          }
          // this.setState({
          // level: this.state.rank
          // });

          // currentState.push(user);
          console.log(currentState);

          this.setState({
            people: currentState,
            dataHasLoaded: true
            //  level: rank
          });
        });
      } else {
        console.log("no user");
      }
    });
  };

любая помощь в этом, пожалуйста, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...