导航在React Native中的axios调用中不起作用

时间:2019-06-11 05:08:33

标签: reactjs react-native axios

我正在React Native中使用axios来执行发布请求,以执行登录用户功能。我成功获得响应,但是登录后我无法导航到主屏幕。这是我的代码。

axios.post('/wp-json/api/v1/user/do_login', {
        username: username,
        password: password
          })
          .then(function (response) {
              console.log(JSON.stringify(response.data.type));
              if(response.data.type == "success"){
                alert("Login Successfully");
                this.props.navigation.navigate("home");
              }else if(response.data.type == "error"){
                alert("Incorrect Detail");
              }


          })
          .catch(function (error) {
            console.log( JSON.stringify(response));
          });

在上面的代码中,我获得了成功的响应,但没有得到下一个屏幕。这是我正在导航到下一个屏幕..

this.props.navigation.navigate("home");

2 个答案:

答案 0 :(得分:4)

在回调函数中使用箭头功能进行导航。

axios.post('/wp-json/api/v1/user/do_login', {
        username: username,
        password: password
          })
          .then((response) => {
              console.log(JSON.stringify(response.data.type));
              if(response.data.type == "success"){
                alert("Login Successfully");
                this.props.navigation.navigate("home");
              }else if(response.data.type == "error"){
                alert("Incorrect Detail");
              }


          })
          .catch(function (error) {
            console.log( JSON.stringify(response));
          });

您使用ES5语法,因此在异步调用中可能无法使用,因此您需要在回调中使用箭头功能(=>)。

答案 1 :(得分:4)

axios.post('/wp-json/api/v1/user/do_login', {
        username: username,
        password: password
          })
          .then((response) => {
              console.log(JSON.stringify(response.data.type));
              if(response.data.type == "success"){
                this.props.navigation.navigate("home");
              }else if(response.data.type == "error"){
                alert("Incorrect Detail");
              }


          })
          .catch(function (error) {
              alert( JSON.stringify(response));
          });