【发布时间】:2018-02-08 20:53:24
【问题描述】:
我对 javascript 比较陌生,并且一直在学习 React。我遵循了一些使用 fetch() 从 React 中的 API 获取数据的教程。该教程当然工作得很好,当使用不同的 API 重新创建它时,我花了几个小时才弄清楚如何重现它,甚至复制速记代码,所以我一直在尝试扩展这个代码,所以我可以准确地理解什么是继续。
fetch(request)
.then(response => response.json())
.then(data => {
let drinkNames = data.data.map(
(dataSelect) => {
return (
<div key={dataSelect.data}>
{dataSelect.name}
</div >
)
})
this.setState({drinks:drinkNames});
})
这是速记代码,它包含看起来像返回其他函数的嵌入函数,但是当我尝试扩展它时,我尝试的所有操作都会给我一个错误,我想了解发生了什么。谁能帮我扩展该代码?
我从文档中了解到,在其基本使用中,箭头函数返回括号中的内容。按照这个逻辑,我尝试了
then(function(data){
function longhand(){
let drinkNames = data.data.map(
(dataSelect) => {
return (
<div key={dataSelect.data}>
{dataSelect.name}
</div >
)
})
}
return longhand();
这显然不起作用,而且我的新 longhand() 函数中似乎还有另一个速记箭头函数,所以我总体上有点困惑。帮忙?
【问题讨论】:
-
您要扩展什么,遇到什么错误?只是一个提示,开始使用在线工具(如 codesandbox 或 codepen)开始工作/测试,它可以让您轻松分享您的代码并帮助我们了解您想要做什么
-
谢谢,我会尝试这样做。我正在尝试扩展 .then(data => ... 中的内容,直到 "this.setState({drinks:drinkNames})" 代码有效,但我不太明白它是如何工作的,这就是为什么我要扩展
-
你想在 Promise 结果中渲染 react,这是不允许的。 React 组件应该总是同步渲染。您可以使用
setState将数据传递给组件的渲染函数。就像我说的,请在代码沙盒上创建一个示例项目。有很多入门项目。 -
箭头函数没有自己的
this- 相反,this是封闭执行上下文的this- 如果您想正确地将 es6+ 扩展为 es5,请使用转译器,例如通天塔。但是请注意,“脱离上下文”的小代码 sn-ps 会导致代码不太正确,尤其是关于this -
我按照您的建议制作了代码和框文件,但问题在于即时连接的 API 不是 https,因此无法获取。无论如何,如果你想看到完整的代码,即使它不会呈现。代码本身确实有效,我只是想扩展它,以便我可以破译发生了什么:/ - >代码框codesandbox.io/s/j34rk6pyq3
标签: javascript reactjs syntax ecmascript-6