taro 中使用 axios 导致路由失效
本文最后更新于:2021年12月20日 晚上
开发环境:
taro 3.3.8
vue 3.2.26
axios 0.21.4
node 14.17.6
场景复现:
request.js
1
2
3
4
5
6import axios from 'axios'
const request = axios.create({
baseURL: "/api",
timeout: 5000
})login.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import request from "../../utils/request.js"
request.post("/user/login", postdata).then(res => {
if (res.code === 200) {
this.$message({
type: "success",
message: "登录成功!"
})
Taro.navigateTo({url:'/pages/home/home'}) //登录成功之后进行页面的跳转,跳转到主页
} else {
this.$message({
type: "error",
message: "登录失败!"
})
}
})
这种情况下,当发起 request 请求时,能够正常与后端进行数据交互,但是Taro.navigateTo({url:’/pages/home/home’}) 并不能生效,页面还会停留在原来的页面,也不会有任何报错。
解决方案
使用 Taro.request() 发起请求, Taro 框架的此 api 不会产生上述 bug,可以成功进行页面间的路由。需要注意的是,使用 Taro 的此 api 时,从后端返回的响应数据是完整的 http 请求的相应体,同样需要自行处理。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!