Я хочу спросить о моем коде.Это работает.Но когда я делаю обновление в firebase, он дает setState только "false", потому что он принимает только измененные данные ... и я хочу спросить, есть ли способ, как вызвать мои данные, не давая их setState в первую очередь?
Я пытался вызвать функцию, подобную this.myf (userTeam, userAccepted), а затем вызвать ее в отдельной функции, но она не работает
_getNotAccepted() {
uzivateleRef.on("value", snapshot => {
let data = snapshot.val();
let seznamNepotvrzenych = Object.keys(data).map((key, i) => {
let getAllUsersUID = data[key].uid;
let dataTeam = snapshot.child("/" + getAllUsersUID + "/teams").val();
let teamInfo = Object.keys(dataTeam).map((key, i) => {
var n = dataTeam[key];
var userTeam = n.teamID;
var userAccepted = n.accepted;
this.setState({ userTeam, userAccepted });
});
console.log(data[key].fname + " je: " + this.state.userAccepted);
if (this.state.userAccepted == false) {
if (this.state.userTeam == this.state.actualUserTeam) {
return (
<View key={key} style={styles.acceptedPpl}>
<View>
<Text style={styles.AcceptedEmail}>{data[key].email}</Text>
{data[key].fname !== "" ? (
<Text style={styles.jmenoPrijmeni}>
{data[key].fname} {data[key].lname}
</Text>
) : (
<Text style={styles.jmenoPrijmeni}>
(Ještě nevyplnil jméno)
</Text>
)}
</View>
<View style={styles.acceptedIcons}>
<Ionicon
name="md-checkmark-circle-outline"
size={30}
color="#89c440"
onPress={() => this.addRoleToUser(data[key].uid, this.state.userTeam)}
/>
<View
style={{
borderLeftWidth: 1,
borderLeftColor: "#DCDCDC",
marginLeft: 15,
marginRight: 15,
height: 20,
marginTop: 5
}}
/>
<Ionicon
name="md-trash"
size={30}
color="#616161"
onPress={() =>
this.showAlert(
data[key].uid,
data[key].email,
this.state.userTeam
)
}
/>
</View>
</View>
);
}
}
});
this.setState({ seznamNepotvrzenych });
});
}
Как я говорю, код работает, но немного глючит и после изменениябаза данных Я должен снова вызвать целую функцию для всех данных, а не только измененных данных
Я хочу иметь этот код:
let teamInfo = Object.keys(dataTeam).map((key, i) => {
var n = dataTeam[key];
var userTeam = n.teamID;
var userAccepted = n.accepted;
this.setState({ userTeam, userAccepted });
});
console.log(data[key].fname + " je: " + this.state.userAccepted);
if (this.state.userAccepted == false) {
if (this.state.userTeam == this.state.actualUserTeam) { ...
примерно так:
let teamInfo = Object.keys(dataTeam).map((key, i) => {
var n = dataTeam[key];
var userTeam = n.teamID;
var userAccepted = n.accepted;
return(userTeam, userAccepted)
});
console.log(data[key].fname + " je: " + this.state.userAccepted);
if (userAccepted == false) {
if (userTeam == this.state.actualUserTeam) { ...