javascript - 承诺解决后如何加载 API 数据以响应组件?
问题描述
我正在尝试创建一个简单的应用程序,该应用程序调用Github API来获取文件并在CodeMirror
组件中显示该文件。代码如下。但是,目前,即使我可以在控制台中记录文件,我也无法在CodeMirror
组件中加载文件。它只显示[object Promise]
.
import React from 'react';
import ReactDOM from 'react-dom';
import CodeMirror from 'react-codemirror'
var createReactClass = require('create-react-class');
require('codemirror/lib/codemirror.css');
var axios = require('axios');
var App = createReactClass({
getInitialState: function() {
return {
code: getRepos(),
};
},
updateCode: function(newCode) {
this.setState({
code: newCode,
});
},
render: function() {
var options = {
lineNumbers: true,
styleSelectedText: true,
};
return <CodeMirror value={this.state.code.toString()} onChange={this.updateCode} options={options} />
}
});
async function getRepos(){
var code = await axios.get('https://api.github.com/repos/<.java file>',
{headers: {
"Accept" : "application/vnd.github.VERSION.raw"
}
})
.then(response => {
var codeq = response.data;
return codeq;
});
console.log(code);
return code;
}
ReactDOM.render(<App/>, document.getElementById('root'));
我应该怎么做才能获得对我的 CodeMirror 组件的已解决承诺?
ps 我对 React 很陌生。
解决方案
看来您没有正确调用它。您需要像这样调用getRepos()
内部componentDidMount
函数:
componentDidMount() {
getRepos().then((res) => this.setState({code: res}))
}
推荐阅读
- asp.net-core - 如何在 .net 核心中将 ViewData 转换为字符串?
- java - 打开名称最相似的文件
- javascript - babel-register 不忽略 node_modules
- c++ - 如何使用 Visual C++(非 C++/CLI)处理 .mdb 数据库?
- php - 审计日志显示 php-fpm 删除了我的文件
- mysql - LOCK TABLES `ABC` WRITE 在 liquibase 中不起作用
- javascript - 将图像和文本归档 formdata ajax 发送到 php。php无法识别的图像
- java - Intellij 空值检查:无法访问的语句
- c# - 如何将 json 文件添加到 Http 请求
- android - USB 设备连接在 6.0 (Marshmallow) 之后不起作用