J'essaie d'installer une variable à l'intérieur d'une classe, mais il jette une erreur disant:
"Rejection non confondu Rejeter TypeError B.Setate n'est pas une fonction" p> blockQuote>
xxx pré> p>
3 Réponses :
Vous devrez peut-être lier "ceci". Ce que «ceci» fait référence à la question.
static message =()=>{
let self = this
// Stuff
self.setState()
import React, { Component } from "react";
import AsyncStorage from '@react-native-community/async-storage';
export default class ACHServicesMenu extends Component {
constructor(props) {
super(props);
//This binding of static method should also give you error
this.message = this.message.bind(this)
this.state = {
value: '',
};
}
//Static methods don't have access to this so it won't work
static message = async () => {
await AsyncStorage.getItem('FromValue').then((FromValue) => {
this.setState({ value: FromValue }, () => {
console.log(this.state.value);
//Here in callback you can get updated state value
});
});
}
}
Use async and await for Promise based request.
Also, if you have static method, you can not access this context and binding of static method should also give you error. You can make that method normal and bind it.
Merci d'avoir expliqué. KRINA !! Mais que devrais-je utiliser d'autre à la place de statique? Parce que sans statique, j'ai eu une erreur disant "_main.default.message n'est pas une fonction"
Il suffit de faire une méthode normale et de l'appeler à l'aide de cela.NameOfmethod ou si vous voulez que ce soit statique, appelez-le à l'aide de class Nom.Methodname
J'essaie d'appeler la fonction de message d'une autre classe. Il ne fonctionne que avec statique avez-vous une alternative à appeler cette fonction sans statique
Supprimer P> import React, { Component } from "react";
import AsyncStorage from "@react-native-community/async-storage";
export default class B extends Component {
state = {
value: ""
};
constructor(props) {
super(props);
this.message = this.message.bind(this);
}
message() {
AsyncStorage.getItem("FromValue").then(FromValue => {
this.setState({ value: FromValue }, () => {
console.log(this.state.value);
});
});
};
}
Mais que devrais-je utiliser d'autre à la place de statique? Parce que sans statique, j'ai eu une erreur disant "_main.default.message n'est pas une fonction"
Merci pour vos efforts, mon frère mais j'ai eu la même erreur "message n'est pas une fonction" lorsque j'ai essayé de l'appeler à partir d'une autre classe comme ONPRESS = () => {b.message ()}
Vous n'avez pas accès au message publiquement. Vous pouvez simplement utiliser la fonction de message localement dans le composant B.
Comment puis-je le faire globalement?
Passez les données par accessoire si vous voulez le faire globalement.