У меня есть логика 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");
}
});
};
любая помощь в этом, пожалуйста, спасибо