#javascript #node.js #react-native
#javascript #node.js #реагировать-родной
Вопрос:
Я пытаюсь поместить свой ответ из моего бэк-энда в мое представление. Но когда я помещаю свое this.state.message, у меня появляется ошибка «null не является объектом this.state.message».
Это часть моего представления
</View>
<View style={{flex:1}}><Text style={{color:'white', textAlign:'center'}}>{this.state.message}</Text></View>
</View>
А также мой серверный
connexion: (req, res, next) => {
const verifEmail = RegExp("([A-z]|[0-9]) @([A-z]|[0-9]) .[A-z]{2,3}");
const email = req.body.email;
if (
verifEmail.test(email) == false ||
typeof req.body.password != "string" /**check des formats emails et pwd */
) {
res.status(417);
res.json({
message:
"Saisie incorrects. Veuillez ressaisir vos identifiants et mot de passe.",
});
} else {
/*comparaison email user et base de donnée si match ou pas */
User.findOne({ email: req.body.email }, (err, data) => {
if (!data) {
return res
.status(401)
.json({ message: "Identifiant et/ou Mot de passe incorrects" });
}
bcrypt.compare(req.body.password, data.password, (err, result) => {
if (err) {
console.log(err);
res.status(500).json({
message: "une erreur s'est produite",
}); /*erreur de saisie ou autre err*/
} else if (!data || !result) {
res.status(401).json({
message:
"Identifiant et/ou Mot de passe incorrects" /*donnée ne matche pas avec database*/,
});
} else {
res.json({
club: data.club,
userId: data._id,
token: jwt.sign({ userId: data._id }, "RANDOM_TOKEN_SECRET", {
expiresIn: "24h",
/*durée de validité du Token, l'utilisateur devra se reconnecter au bout de 24h*/
}),
message: "Connexion Réussie !" /*good password */,
});
}
});
});
}
},
У меня есть то же самое для моего представления subscription, и оно работает. Я не понимаю, почему это не работает для моего представления входа.
Комментарии:
1. как вы запрашиваете серверную часть / обновляете состояние на интерфейсе?
Ответ №1:
используйте этот пример кода для получения данных с сервера в первую очередь :
fetch(url 'ApiService/test', {
method: 'Post',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(res),
}).then((response) => response.json())
.then((responseJson) => {
console.log("responseJson: " responseJson);
this.setstate({message: responseJson.message});
}
затем сначала проверьте console.log("responseJson: " responseJson);
правильность полученных вами данных с сервера.
затем используйте this.setstate({message: responseJson.message});
для набора данных для вашего состояния. Я надеюсь, что это полезно.