javascript - this.state.message null 不是对象
问题描述
我正试图将我的回应放在我的观点上。但是当我把 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 */,
});
}
});
});
}
},
我的订阅视图也一样,它正在工作。我不明白为什么它不适用于我的登录视图。
解决方案
使用此示例代码首先从服务器获取数据:
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});
为您的状态设置数据。我希望这会有所帮助。
推荐阅读
- c# - Json反序列化对象错误
- encryption - BouncyCastle Threefish - 同等区块加密
- android - 在项目单击时更新 RecyclerView 中的 ImageView
- node.js - Bower 安装 - 非法指令(核心转储)
- php - 在laravel中第一次直接访问时无法加载页面
- c# - 在 C++ 中触发事件并在 C# 中处理它们
- qt5 - Bitbake 元工具链-qt5:错误 do_populate_sdk
- spring - 如何防止在某些配置文件上设置属性
- sql-server - 如何在多行删除触发器后记录所有受影响的行
- ms-access - MS 访问计算字段以测试表是否存在