javascript - 无法访问 FETCH 响应数据
问题描述
我为个人 api 创建了一个端点(在代码中被隐藏),它运行良好,我可以正确获取并且我在 console.log 中获取数组
问题是我无法访问数据来填充表格,我不知道出了什么问题。
我的代码:
export default class lastExtensions extends Page {
oninit(vnode){
super.oninit(vnode)
this.loading = true
}
oncreate(vnode) {
super.oncreate(vnode);
app.setTitle(app.translator.trans('justoverclock-extiverse-ext-api.forum.pagetitle'));
app.setTitleCount(0);
const settings = {
"async": true,
"crossDomain": true,
"url": "url",
"method": "GET",
"headers": {
"header1": "header1",
"header1-key": "000000000000000000000jsn213b8019cc43"
}
};
$.ajax(settings).done(function (response) {
this.ext = response.slice(0,14);
console.log(this.ext)
this.loading = false;
m.redraw();
})
}
view() {
return (
<div className="lastExtPage">
{IndexPage.prototype.hero()}
<div className="container">
<div className="sideNavContainer">
<nav className="nav IndexPage-nav sideNav">
<ul>{listItems(IndexPage.prototype.sidebarItems().toArray())}</ul>
</nav>
<div className="content sideNavOffset">
<h1 className="lastExtTitle">
{app.translator.trans('justoverclock-extiverse-ext-api.forum.pageTitle')}
</h1>
<p className="pagedescription">{app.translator.trans('justoverclock-extiverse-ext-api.forum.pageText')}</p>
<div className="containerExtensions" id="extList">
{this.ext.map((ext) =>{ // HERE THE PROBLEM
{console.log(ext)}
return (
<tr class="listaEst">
<td class="tdone">{I WANT DATA HERE}</td>
<td class="tdtwo">{I WANT DATA HERE}</td>
<td class="tdthree">{I WANT DATA HERE}</td>
</tr>
)
})}
</div>
</div>
</div>
</div>
</div>
);
}
我不知道为什么我不能映射和访问我的 fetch 响应来填充表格......我做错了什么?
this.ext 控制台日志是:
[
{
"name": " aaaaaa ",
"desc": "bbbbbbbbb.",
"totalDownload": " 0 downloads ",
"image": "https://aaa.png",
"url": "https://aaa.png"
},
{
"name": " aaaaaa ",
"desc": "bbbbbbbbb.",
"totalDownload": " 0 downloads ",
"image": "https://aaa.png",
"url": "https://aaa.png"
},
{
"name": " aaaaaa ",
"desc": "bbbbbbbbb.",
"totalDownload": " 0 downloads ",
"image": "https://aaa.png",
"url": "https://aaa.png"
}
]
解决方案
我会尝试类似这个例子的东西,这样你就知道你引用的是正确的this
:
oninit(vnode){
...
this.ext = null;
}
setExt = (data) => {
this.ext = data;
}
$.ajax(settings).done(function (response) {
setExt(response.slice(0,14));
...
})
推荐阅读
- angular - 如何在 Angular2+ 中使用 OAuth 1.0a 签名生成器
- java - 如何使用以某些文本开头的单词从字符串中获取子字符串
- wordpress - 当光标触摸按钮时,如何更改按钮中文本的颜色?
- reactjs - React Hook useState setter for prop 失败
- git - 使用 GIT 在同一个存储库中创建一个快捷方式(类似于 SVN 外部)
- android-emulator - android aosp 无法识别的模块类型“hidl_package_root”
- javascript - Material-ui 选择器:如何隐藏文本字段并使用按钮打开模式
- android - 使用 C++ 创建 UDP 服务器以嵌入跨平台 iOS 和 Android 应用程序
- python-3.x - openpyxl delete_rows 函数不删除行
- javascript - 在 ReactJS 中设置状态给了我:无法读取未定义的属性 'setState'