import Request from 'superagent';
const getApi = () => {
let url = '/* URL */';
return Request.get(url).then((res) => {
this.setState({
content: res.body
});
});
}
export default getApi;
我已在function
的外部文件中创建了api call
。如何在外部文件中访问function/setState
?
componentWillMount(){
getApi();
}
我收到此错误:
' TypeError:无法读取属性' setState'未定义'
答案 0 :(得分:4)
您可以将回调传递给组件中的TestName TotalMarks ScoreObtained
Test1, Test2, Test3 100, 200, 150, 150 95, 65, 95,
函数。
getApi
<强>组件强>
const getApi = (onSuccess) => {
let url = '/* URL */';
return Request.get(url).then((res) => {
onSuccess(res.body);
});
}
NB。随着项目变得越来越大,您可能希望研究一个状态管理系统,例如Redux。
答案 1 :(得分:1)
从技术上讲,您可以将实例传递给 <dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.17</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.17</version>
</dependency>
,以便它知道getApi
应该是什么。但是imo。这是一个糟糕的方法。它会创建不必要的依赖项。目前,this
需要知道React类是如何工作的;该函数负责正确操作实例的状态。
如果getApi()
仅返回值,并且实例使用它,则更好:
getApi()
答案 2 :(得分:0)
我的解决方案:
function getApi(component) {
let url = '/* url */';
return Request.get(url).then((res) => {
component.setState({
content: res.body,
});
});
}
componentWillMount(){
getApi(this);
}