获取数据然后渲染到dom React

2023-12-05

您好,我正在从 api 获取数据,我想获取数据并将其渲染到 dom,但出现错误“Uncaught TypeError: Cannot read property 'map' of undefined at Topicselect.render”

这基本上就是我正在做的事情,尽管我已经抽象出了与问题不直接相关的任何内容,例如实际的主题名称、导入等:

class Topics extends Component{
   constructor(props){
     super(props);
     this.state = {
       topics: []
     }
   }
    componentWillMount(){
        fetch('/api').then((res)=>r.json().then((data)=>{
               // push topics into this.state.topics somehow
        }) 
       console.log(this.state.topics) //returns ['topic1','topic2','topic3'];
    } 
   render(){
     const list = this.state.topics.map((topic)=>{
         return(<li>{topic}</li>);
     })
    return(
      <ul>
        {list}
      </ul>
     )
    }
}

谁能告诉我如何解决这个问题?我在这里看到一个答案,说使用 componentDidMount 而不是 componentWillMount 但这对我不起作用


您缺少右括号)获取后确实建议使用componentDidMount()代替componentWillMount()用于从 API 获取数据。

也不要忘记使用this.setState({ topics: data.howeverYourDataIsStructured });从 API 收到数据后,以确保组件的重新呈现。

class Topics extends Component{
  constructor(props){
    super(props);
    this.state = {
      topics: []
    }
  }

  componentDidMount() {
    fetch('/api').then((res)=>r.json().then((data)=>{
      this.setState({ topics: data.topics });
    }));
    console.log(this.state.topics) //returns [];
  }

  render() {
    console.log(this.state.topics) //returns [] the first render, returns ['topic1','topic2','topic3'] on the second render;
    return(
      <ul>
        {this.state.topics.map(topic => (
          <li>{topic}</li>
        ))}
      </ul>
    )
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取数据然后渲染到dom React 的相关文章

  • 仅当表单已提交时才触发 jQuery 表单验证?

    不引人注目的验证基于这样的想法 don t进行表单验证 直到用户提交表单 一旦发生这种情况 如果表单上的某些内容无效 那么一旦用户更改了每个字段 就会立即验证它 我想做的是 不显眼地 触发表单元素的验证 也就是说 only如果用户已尝试提交
  • 如果对象包含在另一个数组中,则从数组中删除该对象

    我试图从数组中删除一个对象 如果该对象的属性 唯一 包含在另一个数组中 我知道我可以像这样执行嵌套 for 循环 for i 0 i lt array length i for j 0 j lt array2 length j if arr
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • React Native:加载图像后应用程序性能不佳

    加载图像似乎没有问题 但是加载完毕后就出现问题了 在我的应用程序中 我在整个游戏中一张一张地加载卡片图像 一旦我加载了 40 张卡片图像 整个应用程序就会变得很慢 它总是发生在第 40 个图像处 当我在第 40 个图像之后继续加载更多卡片图
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 使用 Flask/WTForms 和 React 进行 CSRF 保护

    有没有人成功地为使用 React 作为受控组件 提交到 Flask 后端 最好使用 WTForms 的表单实现了 CSRF 保护 我看过很多部分答案 其中一个是关于 Django 的 但找不到任何关于 Flask 的明确答案 我的大问题似乎
  • 打字稿 - 字符串'不可分配给类型'FC

    我收到以下错误 Type props PropsWithChildren lt amount number gt gt string is not assignable to type FC lt amount number gt Type
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 在 Delphi 7 中处理 CMYK jpeg 文件

    我正在尝试访问存储为 Jpeg 文件的文件 是否有一种简单的方法可以在不损失性能的情况下显示这些图像文件 您可以使用 TJPEGImage 实例加载 JPeg 文件 然后将其分配给 TBitmap 进行显示 您可以在单位 jpeg 中找到
  • 致命:远程错误:找不到存储库 octocat/myapp

    我是第一次使用 Git 刚刚分叉了一个开源项目 如下GitHub 的说明 我可以在本地计算机上克隆我的分叉 但在运行这些命令时出现错误 git remote add upstream git github com octocat myapp
  • 区分数据库中的最新数据

    我正在将数据存储在我的数据库中 存储的数据如下所示 id upload month created at 1 January 2017 01 30 13 22 39 2 Febuary 2017 01 30 13 23 42 3 Janua
  • 在 REPL 中使用对象时任务不可序列化

    因此 另一个问题促使我尝试以下操作 object Foo def f 1 sc parallelize List 1 map x gt val myF Foo f x myF 哪个有效 但以下无效 object Foo def f 1 de
  • ASP.Net MVC 路由捕获所有 *.aspx 请求

    This must之前曾被问过 但读完后here here here and here我无法推断相关部分以使其发挥作用 我正在将旧的 Web 表单站点改造成 MVC 并且想要捕获特定的传入 HTTP 请求 以便我可以发出RedirectPe
  • 按内部元素的数量对二维数组进行排序

    如何按二维数组内部元素的长度对其进行排序 内部元素的数量不相同 Example a 1 2 3 4 5 6 7 8 9 排序后 数组变为 gt 4 5 6 7 2 3 8 9 1 该解决方案有效 a 1 2 3 4 5 6 7 8 9 a
  • 表和存储过程的批量重命名

    我需要重命名所有表 存储过程 显然还有每个存储过程中引用旧表名称的代码 为什么这是最好的方法 我考虑过的一些方法 SP Rename 完成了一半的工作 然而 这不会改变 SP 本身内的代码 除了RedGates的Refactor之外 我在这
  • React Native:React 导航 StackNavigator 不起作用。收到错误:“未定义不是对象(评估'this.props.navigation.navigate')”

    我正在尝试使用 React Navigation 和 StackNavigator 在我的应用程序中导航 我有一个按钮onPress gt navigate DetailsScreen 我希望这能带我去DetailsScreen 但我收到以
  • iPhone 应用程序升级时强制重置 NSUserDefault

    每当用户更新我的应用程序时 我想强制重置为 NSUserDefault 为什么我需要这个 因为每次更新都包含一些关于用户的新信息 由于 NSUserDefault 中已经存在一些信息 令牌 我的应用程序不会调用我的网络服务 因此我没有新的用
  • Python子进程和用户交互

    我正在 Python 2 6 中开发 GUI 前端 通常它相当简单 你使用subprocess call or subprocess Popen 发出命令并等待其完成或对错误做出反应 如果您的程序停止并等待用户交互 您会怎么做 例如 程序可
  • 升级 python 图像库 (PIL) 时,它告诉我“JPEG 支持不可用”

    使用ubuntu 13 10 python 2 7 5 gt gt gt import imaging Image gt gt gt from PIL import Image ImageDraw ImageFilter ImageFont
  • 从http内部函数返回数据

    我在用着this and this参考 从函数内的 http 请求返回数据 function getdetails id var datafordetails data1 item1 item2 data2 item3 ID id var
  • 将项目视为邮件项目

    我正在 Outlook 2016 中创建一个 VBA 应用程序 它分析传入的电子邮件并获取其主题行来搜索重复 或接近重复 的主题行 我使用 for each 循环来浏览项目列表 收件箱中的电子邮件 并分析每个项目的标准 一旦需要回复 传入的
  • R strptime 来自周数的星期一日期很奇怪

    我在这里犯了一个小错误 但无法集中精力找出问题所在 我需要获取随机日期的星期一的日期 似乎我得到了完全不同的东西 mydate lt date 2013 11 05 format mydate A this is Tuesday right
  • 流畅和查询表达式——其中一种比另一种有什么好处吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 LINQ 是自泛型以来对 NET 最伟大的改进之一 它为我节省了大量的时间和代码行 然而 对我来说 流畅的语法似乎比查询表达式语法更自然 var title entries Where e
  • 强制 MS Access 检索所有列表框行并释放锁定

    我有一个列表框 其中 RowSource 绑定到附加的 SQL Server 表 如果表很大 Access 不会加载完整的结果集 而是创建服务器端游标并在列表框向下滚动时 按需 加载数据 这是一个很好的功能 因为它允许列表框和组合框快速显示
  • jquery validate:为错误消息添加淡入/淡出效果

    我想为 jquery 验证上显示的错误消息添加淡入 淡出效果 有什么方法可以做到这一点 我可以在它们上使用 div 并单独处理它们吗 插件有这个效果吗 我使用此代码来放置错误消息 我需要它来正确放置 commentForm2 validat
  • NestJS TypeORM 模拟存储库的数据源

    我正在尝试模拟一个存储库 我不想进行实际的数据库调用 我 认为我 正在关注 NestJS 的文档以及某些 stackoverflow 项目 但是 当我运行测试时 出现以下错误 JwtStrategy validate throws an u
  • Java 7 支持的 JavaFx 应用程序未在 Mojave 上运行

    我的申请支持 Jdk1 7 0 76 JavaFx2 2 76 b13 Netbeans IDE Ant 用于构建和创建安装程序 在 Windows 和 Mac 上受支持 它一直成功运行到 High Sierra 当我尝试跑步时 app莫哈
  • 获取数据然后渲染到dom React

    您好 我正在从 api 获取数据 我想获取数据并将其渲染到 dom 但出现错误 Uncaught TypeError Cannot read property map of undefined at Topicselect render 这