异步等待和获取语法在 React 中不起作用

2024-07-01

这是我的代码:

export class App extends Component {
    constructor(props) {
        super(props)
    }
    async fetchSport(sport) {
        let headers = new Headers()
        headers.append('key-goes-here', 'pass-goes-here')
        headers.append('Accept', 'application/json')
        let request = new Request('api-url-goes-here' + sport, {headers: headers})
        let data = await fetch(request).then(response => response.json()).then(json => json.players.forward)
        console.log(data) // 'Christopher Brown'
        return data
    }
    render() {
        return (
            <div className='app'>
                <SportPlayers
                    sport={this.fetchSport('soccer')}
                />
            </div>
        )
    }
}

未捕获错误:对象作为 React 子对象无效(发现:[对象 承诺])。如果您打算渲染子集合,请使用 数组代替或使用 createFragment(object) 包装对象 反应附加组件。检查 `SportPlayers` 的渲染方法。

我试图找出为什么会出现此错误。这fetchSport函数应该返回一个字符串(如 console.log 所建议的那样),但似乎承诺返回到视图。

下面是我的 webpack.config.js:

var webpack = require("webpack");

module.exports = {
    entry: ["babel-polyfill", "./src/index.js"],
    output: {
        path: "/dist/assets",
        filename: "bundle.js",
        publicPath: "assets"
    },
    devServer: {
        inline: true,
        contentBase: "./dist",
        port: 3000 
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /(node_modules)/,
                loader: ["babel-loader", 'babel-loader?presets[]=es2016,presets[]=stage-3,presets[]=react'],
            },
            {
                test:  /\.json$/,
                exclude: /(node_modules)/,
                loader: ["json-loader"]
            },
            {
                test: /\.css$/,
                loader: 'style-loader!css-loader!autoprefixer-loader'
            },
            {
                test: /\.scss$/,
                loader: 'style-loader!css-loader!autoprefixer-loader!sass-loader'
            }
        ]
    }
}

正如很多人已经说过的,async函数总是返回一个Promise对象,然后您可以使用以下方法获取其值.then().

一般来说,如果您需要向服务器发出许多请求,您应该使用状态管理框架,例如Redux http://redux.js.org/。然而,Redux 引入了很多样板文件。如果您的用例很简单,您可以使用本地用户界面状态 https://facebook.github.io/react-native/docs/state.html存储您的通话结果。

像这样的事情:

export class App extends Component {
    constructor(props) {
      super(props)
      this.state = { sport: '' }
    }

    componentDidMount() {
      this.fetchSport('soccer').then(sport => this.setState({ sport }))
    }

    async fetchSport(sport) {
        let headers = new Headers()
        headers.append('key-goes-here', 'pass-goes-here')
        headers.append('Accept', 'application/json')
        let request = new Request('api-url-goes-here' + sport, {headers: headers})
        let data = await fetch(request).then(response => response.json()).then(json => json.players.forward)
        console.log(data) // 'Christopher Brown'
        return data
    }

    render() {
        return (
            <div className='app'>
                <SportPlayers
                    sport={this.state.sport}
                />
            </div>
        )
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步等待和获取语法在 React 中不起作用 的相关文章

  • 角度变量初始化

    我在角度控制器中有一个变量 scope abc 我有 Sails 作为后端 scope abc的初始值可以由后端在生成页面时确定 页面显示给用户后 scope abc 可能会也可能不会被用户更改 我可以让后端生成一个完整的静态页面 并让 A
  • 在 location.reload() 之后保持滚动位置

    我使用ajax 来更新所选的照片 如果成功 则刷新页面 用户可以看到所选的图像 它将有一个CSS边框 但当页面刷新时 位置又会回到顶部 我想知道重载后如何保持位置 我搜索了很多网站 仍然无法得到它 请指导我一下谢谢 EDIT 我在这里找到了
  • 如何使用 JavaScript 写入不同的网页?

    我正在尝试从一个网页获取用户输入并将其写入已存在的另一个网页 如果重要的话 所有网页都在同一个域中 我调试 JavaScript 见下文 并看到它正确地迭代 for 循环并构建要写入的正确信息 但它不会将其写入其他网页 不确定我做错了什么
  • 引导崩溃仅切换一次

    我再次在这里拉扯我的头发 所以我已经使用 jsFiddle 进行了引导崩溃 http jsfiddle net rasreye xtPtH 1 http jsfiddle net rasreye xtPtH 1 但是当我添加到我的网站时 它
  • 解析:删除用户及其相关记录

    我有带有实体的解析表 用户 默认类别 Commets 带有指向 User 实体的指针的类 我需要从实体 User 中删除用户及其所有评论 位于 Comments 实体中 现在我有 JS Cloud 代码 Parse Cloud define
  • 我使用 React 时遇到错误:“无效的 DOM 属性 `for`。您的意思是 `htmlFor`”

    我正在为前端使用 React 创建一个简单的 CRUD 应用程序 但遇到了以下错误 app js 21988 Warning Invalid DOM property for Did you mean htmlFor 这是我的代码 impo
  • 使用 Javascript 隐藏数据网格列?

    我有一个包含大约 20 列的 net 数据网格 我需要使用 JavaScript 通过单击按钮来切换列的可见性 有任何想法吗 您想使用 COLGROUP 来执行此操作 否则您必须应用样式every细胞开启everyrow 这将非常低效 并且
  • 使用 getElementById 获取锚标记的对象

    anchorobject document getElementById backbutton alert anchorobject a href http www hotmail com back a 上面的代码提醒 href 属性字符串
  • React 组件使用 useState 渲染两次

    当没有任何东西被用来触发重新渲染组件时 我真的很难弄清楚发生了什么 Events js当我删除组件时 组件渲染两次useState 来自Event js它渲染一次 但我需要保留它 当我使用useEffect 在事件组件内 第四次渲染 我只是
  • Tensorflow.js 与 React-Native

    我知道tensor flow js是一个以网络为中心的库 但出于好奇 我也在react native上尝试了它 它有点有效 它仅适用于调试模式 并在调试模式关闭时抛出错误 错误说窗口 位置 搜索不是一个对象 经过一些研究 我发现窗口对象是在
  • Phantomjs / Casper.js 带有旋转代理?

    我有一个简单的目标 使用以下任一方式加载网页phantom js 开箱即用 或casper js 很好也更容易 但是使用代理并旋转它如果当前列表不好 即网页加载失败或类似情况 则从列表中选择 我知道 casper js 有 proxypar
  • 全选/取消全选页面中的复选框

    我看过this http railsforum com viewtopic php id 2151这似乎对我的代码没有影响 我试过了this https stackoverflow com questions 888173 select a
  • 如何获取 Firebase ID

    有人知道如何获取 Firebase 唯一 id 吗 我试过了name name key key 什么都不起作用 我可以看到数据 但不知道如何取回 id 我需要它 Create new customers into firebase func
  • 当没有电子邮件客户端时,“mailto:”会做什么?

    我正在开发一个网站 什么是mailto 如果没有电子邮件客户端 如 Outlook Thunderbird 等 如何打开 它可以在我的电脑上运行 该电脑装有 Outlook 但如果有人想要怎么办 mailto 例如 在 gmail com
  • AngularJS ui-router:如何全局解析所有路由的典型数据?

    我有一个 AngularJS 服务 它与服务器通信并返回 申请表不同部分的翻译 angular module utils service Translations q http function q http translationsSer
  • 未知深度的普通 JS 级联选择

    想要制作一个通用的级联下拉菜单 但递归能力较弱 代码应该以 做出选择后 即可选择物品 衣服或小玩意 Levis Gucci 或 LG Apple 之一 当做出选择时 一件选择 搭配 Levis 牛仔裤或夹克或 Gucci 鞋子或连衣裙 当做
  • 从 JavaScript 中的内部函数返回?

    我有一个 jQuery 支持的 JavaScript 函数 它迭代字段列表并检查它们是否为空 如果是 则阻止表单的提交 required fields forEach function field if field val field ad
  • 使用react-transition-group左右滑动

    我想制作左右幻灯片反应过渡基团 当我按 下一步 按钮时 它会出现在右侧 下一步 当我单击 后退 按钮时 我想它从左侧出现 我的代码总是从右侧获取它 我怎样才能实现这样的目标 onboarding screen display flex fl
  • 通过 http 在两个 Node.js 服务器之间传输文件

    我有两个通过 http 相互通信的 node js express 服务器 server A它还与浏览器通信并可以处理文件上传请求 当文件上传到server A我想将其原样转移到server B以便进一步加工 最好的方法是什么 最好与请求
  • 克隆元件查找器

    在研究可用的同时ElementFinder and ElementArrayFinder方法 我注意到有一个clone method http angular github io protractor api view ElementFin

随机推荐

  • jQuery 可以根据高度选择 div 吗?还是教程错了?

    我正在尝试选择一个div基于其高度 如本教程所示 jQuery 选择 http tutorials jenkov com jquery selection html 我无法让它工作 jsbin 示例 http jsbin com eriqi
  • 向量到元素之间差异矩阵

    给定一个向量 vec lt 1 5 创建矩阵的有效方法是什么 其中向量分量之间的差异显示在矩阵 差异矩阵 中 如果您愿意的话 显然 我可以使用两个 for 循环来完成此操作 但我需要使用更大的数据集来完成此操作 我试图为这个矩阵创建一个术语
  • 列出 AD 用户的组成员身份

    使用以下 Powershell 代码片段 我获取当前用户的组成员身份的名称 groups System Security Principal WindowsIdentity GetCurrent Groups foreach i in gr
  • 当字符串值包含逗号时,JSON.parse 在 Safari 中失败

    我正在构建一个购物车 当按下 购买 按钮时 Web 服务会返回一个 JSON 输出 然后我将其作为字符串保存到 Javascript cookie 中 Web 服务的典型返回可能是 d 58658 id 58658 qty 1 single
  • 在Python中根据等级和花色对一手牌进行排序

    我正打算制作一款纸牌游戏 目前我正在着手开发它 我感到困惑的是 按牌的等级对手中的牌进行排序 然后按花色排序 以及如何减少重复 目前 我可能可以创建一个 for 循环来组织卡片 然后为每种可能性设置 52 个不同的 if 但我想知道它们是否
  • 当叠加两个相同大小的图像时,其中一个会偏移

    我正在尝试通过将一个图像叠加在另一个图像上来创建图像 该代码有效 但我叠加的图像似乎略有拉伸 我不知道为什么 所以代码只是创建一个空白的红色 24x24 矩形 然后我覆盖一个 24x24 png 文件 如下所示 我期待的是这样的 但我实际上
  • dte.Solution.SolutionBuild.StartupProjects 更改时是否会触发事件?

    我正在构建一个 Visual Studio 2010 插件供我公司内部使用 我想自定义主窗口标题以显示当前启动项目的名称 我可以使用以下代码设置主窗口的标题 DTE d GlobalClass dte2 as DTE IntPtr hWnd
  • WPF ICollectionView 过滤

    我写了一个代码过滤项目在组合框中 我的问题是 你会怎么做 我认为这种带有反射的解决方案可能非常有效slow ICollectionView view CollectionViewSource GetDefaultView newValue
  • 如何将此查询编写为完整联接而不是联合左/右联接?

    这是代码 显示输入和所需的输出 基本上 我正在尝试自我加入 以将经纪人声明的结果与我的内部记录相匹配 所以左边的列是经纪人的列表 右边是我的列表 如果经纪人有仓位 而我没有 则右侧为 NULL 如果我有仓位而经纪商没有 则左侧为 NULL
  • 如何在知道其十进制值的情况下找出菜单中项目的字符串 ID?

    我正在使用 android support v7 appcompat 在一个活动中 我想在操作栏中显示后退按钮 我愿意 public class News extends ActionBarActivity Override protect
  • 无法在 BeautifulSoup 中获得正确的链接

    我正在尝试解析一些 HTML 并且想提取与特定模式匹配的链接 我正在使用find使用正则表达式的方法 但它没有给我正确的链接 这是我的片段 有人可以告诉我我做错了什么吗 from BeautifulSoup import Beautiful
  • 使用 Kotlin 在 Android 中渲染 PDF

    我已经在使用 Java 的 PDF 上看到了该线程 但找不到任何有关如何使用 Kotlin 执行此操作的信息 有什么方法或者我需要使用Java吗 在 Android 上使用 Java 渲染 PDF 文件 https stackoverflo
  • 构建警告会影响 iOS 应用商店审批流程吗?

    当应用程序正在经历应用程序商店审批流程时 Apple 的人员会检查项目中的警告 还是只检查错误 例如我的很多 NIB 文件上都有这样的警告 不支持的配置 设置了标题但使用系统标识符 这些属性是互斥的 标题将被忽略 这会成为 Apple 拒绝
  • php 字符串与通配符 * 匹配?

    我想提供将字符串与通配符匹配的可能性 Example mystring dir folder1 file pattern dir file stringMatchWithWildcard mystring pattern gt Return
  • 命令行上出现“黄瓜:找不到命令”错误;不过“耙黄瓜”效果很好

    刚刚在我的系统上更新了我的黄瓜宝石 并且在运行我的标记黄瓜功能时遇到了问题 cucumber 命令不再在我的命令行上运行 bash 黄瓜 找不到命令 最初的想法是我的 PATH 没有在 bash login 中正确设置 不过 我认为这里一切
  • Dockerfile:如何根据ubuntu版本设置apt镜像

    在构建 docker 镜像时 可以通过覆盖来设置自定义 apt 镜像 etc apt sources list e g FROM ubuntu focal RUN echo deb mirror mirrors ubuntu com mir
  • 使用工作日和日历日更新表格

    我在 SQL Server 2012 中有一个表 每月手动更新一次 以反映文件预计进入的日期 日期规则已经有值 但预期日期列是手动更新的 如果预计在 BD1 第 1 个工作日 我将更新到该月的第一个非周末 如果预计在 CD1 日历日 1 我
  • 如何搜索来自另一个页面模型的串联名称列表?

    我的项目中有多个模型 但在下面的屏幕中 大多数字段 属性都位于 SecurityLog 模型中 下面是我显示的官员串联列表 除了军官姓名之外 我的搜索和列标题排序功能正常 我很难合并官员姓名 因为该列表来自另一个页面模型 这是我的数据库架构
  • 无法解析“:app@debug/compileClasspath”的依赖关系:无法解析

    新安装的安卓工作室3 1 3在创建新项目并第一次编译时出现奇怪的依赖关系错误 一个相似的question https stackoverflow com questions 46949622 android studio 3 0 unabl
  • 异步等待和获取语法在 React 中不起作用

    这是我的代码 export class App extends Component constructor props super props async fetchSport sport let headers new Headers h