我有一个帮助器js文件并且有一个异步调用方法,在我的组件中导入helper js文件并在componentDidMount中进行调用。
在ajax完成之前,该值将返回为undefined。有没有办法编写回调函数,成功时它应该来到我的componentDidMount方法。
这就是我的尝试:
helper.js
export const asynchronous = data => {
axios.get(url).then(res => {
return res;
});
}
component.js
import {asynchronous} from 'helper';
componentDidMount(){
const newResp = asynchronous(this.props.data);
console.log(newResp); // returned before api success/failure, should be returned after api request
}
答案 0 :(得分:1)
使用from bs4 import BeautifulSoup as bs
import requests
import re
site = requests.get('https://www.ubc.ca/')
html = bs(site.content, 'html.parser')
link = html.find('a', string=re.compile('(?i)(donate|donation|gift)'))
#returns none
async-await
以及您的async componentDidMount(){
const newResp = await asynchronous(this.props.data);
console.log(newResp); // returned before api success/failure, should be returned after api request
}
代码。您错过了asynchronous
声明。
return
答案 1 :(得分:1)
需要向componentDidMount添加异步,然后等待响应。
// helper.js
async function getData(url) {
const response = await axios.get(url);
console.log(response);
return response;
}
export default getData;
在您的组件中:
import { getData } from './helper.js'; // <-- Not 'helper' which looks in node modules
...
componentDidMount = async () => {
const newResp = await asynchronous(this.props.data);
console.log(newResp);
}
...
更重要的是,你会想要对这种反应做些什么。
...
componentDidMount = async () => {
const newResp = await asynchronous(this.props.data);
this.setState({ data: newResp })
}
...
答案 2 :(得分:1)
您可以返回初始axios承诺,然后使用其then
,
export const asynchronous = data => {
return axios.get(url);
}
并在componentDidMount中使用它
componentDidMount(){
const newResp = asynchronous(this.props.data).then(res => {
console.log(res);
});
}