首页 > 解决方案 > 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 */,
            });
          }
        });
      });
    }
  },

我的订阅视图也一样,它正在工作。我不明白为什么它不适用于我的登录视图。

标签: javascriptnode.jsreact-native

解决方案


使用此示例代码首先从服务器获取数据:

  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});为您的状态设置数据。我希望这会有所帮助。


推荐阅读