reactjs - 多个axios里面的useEffect
问题描述
我需要做这样的事情。
const [token, setToken] = useState('')
const urlAuth = 'http://localhost:8624/login'
const bodyData = {
username: 'training',
password: 'traiOA9876'
}
const data = {
headers: {
'Content-Type': 'application/json'
}
}
console.log(token)
const dataListUrl = 'http://localhost:8624/locations'
const headers2 = {
headers :{
'Authorization': `Token ${token}`,
'Content-Type': 'application/json'
}
}
useEffect(() => {
//console.log(token)
async function getPost() {
const response = await axios.post(urlAuth, bodyData, data )
console.log(response.data.token)
setToken(response.data.token);
}
async function GetData(){
const response2 = await axios.get(dataListUrl, headers2)
console.log (response2)
}
getPost();
GetData();
}, [setToken])
我需要进行第一次 axios 调用,以从服务器获取令牌。(这部分有效!!!)但是我需要在第二个 axios 调用中使用这个令牌,从 API 获取数据。在我的邮递员作品中,但在这里我无法解决第二部分。
我也试过这个,但没有奏效:
const [token, setToken] = useState('')
const urlAuth = 'http://localhost:8624/login'
const bodyData = {
username: 'training',
password: 'traiOA9876'
}
const data = {
headers: {
'Content-Type': 'application/json'
}
}
console.log(token)
const dataListUrl = 'http://localhost:8624/locations'
const headers2 = {
headers :{
'Authorization': `Token ${token}`,
'Content-Type': 'application/json'
}
}
useEffect(() => {
//console.log(token)
axios.post(urlAuth, bodyData, data )
.then((response) => {
//console.log(response)
let tokenRes = response.data.token;
setToken(tokenRes)
console.log(tokenRes)
axios.get(dataListUrl, headers2)
.then((res) => {
console.log(res)})
}
)
}, [setToken])
感谢您的时间和帮助!
解决方案
ReactsetState
是异步的,这意味着你不能期望令牌在你调用setToken()
. 为了解决这个问题,您需要将您的第二个 api 调用包装在一个作为依赖项useEffect
传递的钩子中。token
useEffect(() => {
// your getData api call goes here
}, [token])
推荐阅读
- r - 如何在R中使用两个向量重复数据列表
- python - 为什么每次尝试将变量放入 Xpath 时都会出现语法错误
- django - 模型的相关字段?
- android - 查找点击的文本视图的索引
- api - 有没有办法使用 Slack 的 API 来获取公共工作区的数据?
- javascript - 如何从客户端获取 POST 请求正文数据?
- java - 有没有办法以编程方式获取 R.Id.text1 的 text1 ?
- ios - 我如何制作“
想要向您发送通知”权限对话框在 iOS 模拟器上本地化? - sql - 如何在 PostgreSQL 中找到一个值保持相同状态的最大时间差?
- python - 对整个数据集进行 K 折交叉验证