React 代码抛出“TypeError:this.props.data.map 不是函数”

2024-03-25

我刚刚开始用 React 编码,我习惯用 CoffeeScript 编码。我尝试沿着React 文档中提供的教程 http://facebook.github.io/react/docs/tutorial.html并为状态更新做了类似的事情。

然而,我得到TypeError: this.props.data.map is not a function.

我有点迷失,想知道我错在哪里。有人可以指导我并告诉我哪里出错了吗?

这是我的代码:

(function() {
    var Status, StatusBox, StatusForm, StatusList, button, div, h4, textarea, _ref;

    _ref = React.DOM, div = _ref.div, textarea = _ref.textarea, button = _ref.button, h4 = _ref.h4;

    StatusBox = React.createClass({
        getInitialState: function() {
            return {
                data: []
            };
        },
        loadStatusFromServer: function() {
            return $.ajax({
                url: this.props.url,
                success: function(data) {
                    this.setState ({data : data})
                }.bind(this),
                error: function(xhr, status, err) {
                    console.error("status.json", status, err.toString());
                }.bind(this)
            });
        },
        componentWillMount: function() {
            return setInterval(this.loadStatusFromServer, this.props.pollInterval);
        },
        render: function() {
            return div({
                className: "status-box"
            }, [
                StatusForm({}), StatusList({
                    data: this.state.data
                })
            ]);
        }
    });

    StatusList = React.createClass({
        render: function() {
            var statusNodes;
            statusNodes = this.props.data.map(function(status) {     // This is where is it throwing up an error. I have no idea why though?
                return Status({
                    author: status.author
                }, [status.text]);
            });
            return div({
                className: "comment-list"
            }, [statusNodes]);
        }
    });

    Status = React.createClass({
        render: function() {
            return div({
                className: "status"
            }, [
                h4({
                    className: "author"
                }, [this.props.author]), this.props.children
            ]);
        }
    });

    StatusForm = React.createClass({
        handleClick: function() {
            var name, value;
            name = "Samuel";
            value = this.refs.status.getDOMNode().value.trim();
            return this.refs.status.getDOMNode().value = '';
        },
        render: function() {
            return div({
                className: 'status-form'
            }, [
                textarea({
                    placeholder: "What's on your mind?...",
                    rows: 5,
                    ref: "status"
                }), button({
                    onClick: this.handleClick
                }, ["post"])
            ]);
        }
    });

    React.renderComponent(StatusBox({
        url: '/user/blahXHR',
        pollInterval: 5000
    }), document.body);
}).call(this);

将代码修改为这样:

loadStatusFromServer: function() {
    return $.ajax({
        url: this.props.url,
        dataType: 'json',
        success: function(data) {
            this.setState({data: data})
        }.bind(this),

Here dataType: 'json',很重要。看$.ajax() docs http://api.jquery.com/jquery.ajax/以及SO的相关问题:

  • $.ajax - 数据类型 https://stackoverflow.com/q/2722750/2157640
  • jQuery ajax 函数中 contentType 和 dataType 的区别 https://stackoverflow.com/q/14322984/2157640
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 代码抛出“TypeError:this.props.data.map 不是函数” 的相关文章

  • 使用通过 (document.getElementById('ID')) 添加到数组的元素

    为什么这段代码不起作用 var all obj element new Array all obj element 0 document getElementById Img3 alert all obj element 0 style w
  • Heroku 上重启后 Better-SQLite3 数据库重置

    我有一个 Discord 机器人better sqlite3 https github com JoshuaWise better sqlite3硬币和 XP 数据库 直到两周前它一直工作得很好 现在 每次重新启动后 它只会恢复 XP 和硬
  • Puppeteer 的行为与开发者控制台不同

    我正在尝试使用 Puppeteer 提取此页面的标题 https www nordstrom com s zella high waist studio pocket 7 8 leggings 5460106 https www nords
  • 动态添加jinja模板

    我有一个 jinja 模板 它是一组 div 标签内的唯一内容 div include temppage html div 当我按下按钮时 我想用其他内容替换标签之间的所有内容 我希望用另一个 jinja 模板 include realpa
  • Google javascript 登录 api:无法离线访问

    我正在尝试为服务器端应用程序实现 Google 登录 如 Google 文档中所示 服务器端应用程序的 Google 登录 https developers google com identity sign in web server si
  • 传单圆圈绘制/编辑问题

    我第一次制作传单 并面临绘制圆圈和编辑 更改圆圈位置 的问题 我面临的问题是 编辑 移动 圆从一个位置到另一位置会改变其半径 Note 请尝试在给定的小提琴中在地图顶部创建圆圈 然后通过单击编辑按钮将其移动到底部 如果我在地图的顶部创建圆圈
  • 确定用户是否在shadow dom之外单击

    我正在尝试实现一个下拉菜单 您可以单击外部将其关闭 下拉列表是自定义日期输入的一部分 并且封装在输入的影子 DOM 内 我想写一些类似的东西 window addEventListener mousedown function evt if
  • Bootstrap shown.bs.tab 事件不起作用

    我正在使用灵活的模板 http the8guild com themes html flexy v1 7 stylesPage html 使用引导程序 并且我无法让选项卡上的 shown bs tab 事件正常工作 我已经成功让它发挥作用J
  • Node.js 循环发送 http 请求

    我实际上遇到了使用 node js 执行的 javascript 代码的问题 我需要循环发送http请求到远程服务器 我在代码中设置了www google ca 这是我的代码 var http require http var option
  • 如何在React中处理多个路由器

    假设我们有一个网络应用程序 它通常有很多视图 例如索引页面 管理面板 帮助页面 联系人等 我在主index js 中使用react router dom 来处理它们 它工作得很好 但是现在我在开发管理面板时遇到了问题 它是 index js
  • Firefox CSS 旋转与 Chrome 旋转不同

    我想制作一个 3D 矩形 平行六面体 用户可以用箭头移动它 它在 Chrome 中工作得很好 但在 Firefox 中 一些转换 实际上很多 与 Chrome 不同 看着this https jsfiddle net 7273yur9 2
  • 可点击的进度条

    我正在使用 Angular 并在 JavaScript 的帮助下开发了一个可点击的进度条 这是我能做到的最好的 有没有办法将滑块放置在进度条内但不干扰进度可视化 堆栈闪电战 https stackblitz com edit angular
  • jQuery 和所有 .js 文件无法在本地运行,只能在外部运行

    我有一个奇怪的问题 我正在编写一个网站 包括 jQuery 和一些插件 它们存储在 js 文件夹中 当我尝试通过浏览器 jQuery 打开它时 插件和所有自定义脚本都不起作用 也许这与我的代码有关 但不这么认为 当然 当我在外部包含 jQu
  • 在流星收集加载时显示加载程序

    我有一个模板 task list 看起来像这样 each tasks gt task each Template task list tasks返回一个集合 在用户界面中 加载似乎需要一些时间 当集合正在加载时 我想显示一个加载指示器 关于
  • 字符串化 JavaScript 对象

    我正在寻找字符串化一个对象 我想要这样的输出 1 valeur dalebrun usager experttasp date 2013 08 20 16 41 50 2 valeur test usager experttasp date
  • 使用 jquery 时出现控制台错误 - Uncaught TypeError: Object # has no method

    我尝试使用以下 js 添加类或 css 样式 但出现控制台错误 var i 0 question i addClass show 收到以下控制台日志错误 Uncaught TypeError Object has no method add
  • 使用 sockjs 和 stomp 进行 /info 请求期间没有 cookie

    我正在尝试将 Spring Security 与 websockets 一起使用 作为一个例子 我正在使用 spring websocket chat https github com salmar spring websocket cha
  • 用于检查字符串是否至少包含 3 个字母数字字符的最有效的正则表达式

    我有这个正则表达式 a zA Z0 9 3 我用它来查看字符串中是否至少包含 3 个字母数字字符 似乎有效 它应该匹配的字符串示例 a3c 0 c 8 9 9d 但是 我需要它更快地工作 有没有更好的方法使用正则表达式来匹配相同的模式 编辑
  • 如何使用正则表达式解析 OCC 选项符号?

    OCC 选项符号由 4 部分组成 标的股票或 ETF 的根代码 用空格填充至 6 个字符 到期日期 6 位数字 格式为 yymmdd 期权类型 P 或 C 用于看跌或看涨期权 执行价格 为价格 x 1000 前面填充 0 至 8 位数字 举
  • d3.js 更新视觉效果

    我有一个与 d3 js 放在一起的树形图 我通过 getJSON 填充数据 效果很好 但是 我在 setInterval 方法中具有此功能 并且它似乎并没有刷新自身 var treemap d3 layout treemap padding

随机推荐

  • Matlab:如何在散点图中设置图例的颜色,其中每个数据点获得不同的颜色?

    这是示例代码 x rand 100 1 y rand 100 1 score rand 100 1 figure colormap flipud bone caxis 0 1 axis 0 1 0 1 scatter x y 50 scor
  • SqlCeParameter返回自动ID(主键)

    我有一个SQLSqlCeParameter声明例如 mySQLCommand1 CommandText INSERT INTO clientSubjectiveComplaints clientSubComplaintCreated VAL
  • 使用 https 进行 WCF 服务自托管

    目前 我们的一台客户端计算机中有一个作为 Windows 服务托管的 Wcf 服务 实际上目前它正在使用正常的 http 调用 由于我们需要使用 https 而不是 http 因此我们修改了 app config 但启动服务后 https
  • 删除 c++ std::vector 中的所有项目

    我正在尝试删除其中的所有内容std vector使用以下代码 vector erase vector begin vector end 但它不起作用 更新 clear不会破坏向量保存的元素吗 我不想这样 因为我仍在使用这些对象 我只想清空容
  • 使用 Apache CXF 和 CDI 的 Spring Boot

    使用时Apache 的 CXF JAX RS Spring Boot 启动器 http cxf apache org docs springboot html SpringBoot SpringBootCXFJAX RSStarter与CX
  • 将现有 WAR 部署到嵌入式 Jetty

    我的目的是将现有的 WAR 部署到嵌入式 Jetty 9 4 5 不幸的是 当我尝试打开页面 JSP 时出现以下错误 An error occurred at line 52 in the generated java file tmp e
  • Oracle SQL中如何获取与正则表达式匹配的字符串的一部分

    假设我在表的某些字段中有以下字符串 product 1627 color 45 size 7 我想查询颜色并得到 45 通过这个查询 SELECT REGEXP SUBSTR product 1627 color 45 size 7 col
  • 如何在设备树源文件中添加注释

    如何在设备树源文件中添加多行或单行注释 我到处都找不到它 使用注释的默认 c 方式是否有效 使用注释的默认 c 方式是否有效 是的 使用 comment ADDENDUM 我还使用过 C 预处理器 if 0 and endif在测试期间快速
  • 如何在使用inputView后显示键盘

    I used inputView以显示uipickerview for my textfield 但我用同样的textfield用于其他功能 使用后如何显示标准键盘inputView为了那个原因textfield textfield inp
  • Android 中的底部按钮栏

    我想知道如何在 android 中创建底部栏按钮 我读到了一些关于这个 U I 的内容 解决办法 有什么控件可以使用吗 您可以在相对布局中执行类似的操作
  • 我正在尝试解决“15 个难题”,但出现“OutOfMemoryError”[已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有没有一种方法可以优化此代码以免耗尽
  • 使用分页 extjs 在组合框中搜索

    您好 我正在尝试在组合框中进行搜索 它正在工作 但仅在当前页面中搜索我也使用分页搜索 我需要在所有页面中搜索而不仅仅是当前页面 任何建议 xtype combo fieldLabel Organization Id name company
  • 将 Streaming Flux 的 WebClient Post 拆分为 JSON 数组

    我正在使用第三方 REST 控制器 它接受 JSON 对象数组并返回单个对象响应 当我使用有限的 WebClient 进行 POST 时Flux代码有效 我认为 因为Flux完成 然而 当Flux可能是无限的 我该怎么办 以数组块形式发布
  • 如何在CSS多列布局中将单列居中

    我有一个使用 CSS 多列布局的元素来显示项目列表 div style text align center div Item 1 div div Item 2 div div Item 3 div div Item 4 div div It
  • 在 C# 中从未知长度的流计算哈希值

    C 中计算未知长度流的 动态 md5 之类哈希的最佳解决方案是什么 具体来说 我想根据通过网络接收的数据计算哈希值 我知道当发送者终止连接时我已经完成接收数据 所以我事先不知道长度 编辑 现在我正在使用 md5 并在保存数据并将其写入磁盘后
  • GitHub 页面上的 AngularJS html5mode 支持

    问题是 does GitHub 页面支持AngularJShtml5mode 我找到了一个www资源 https coderwall com p kfomwa angularjs html5mode on github pages其中指出可
  • 线程不活动时释放资源

    我正在使用BackgroundWorker 在其中我使用foreach循环 在其中创建新线程 等待它完成 然后报告进度并继续foreach循环 这就是我要说的 private void DoWork object sender DoWork
  • springfox-swagger2 UI是否支持一次选择多个文件?

    我使用 Spring Boot 和集成的 swagger ui springfox swagger2 我希望能够选择一次上传多个文件 不幸的是 Swagger UI 似乎不允许这样做 至少不允许我的控制器方法 我的控制器方法签名 ApiOp
  • 过滤包含特定字符串的数据[重复]

    这个问题在这里已经有答案了 我希望过滤包含特定字符串的数据 假设这是我的数据集 dst first second 24 Sienna Zoe Dylan 32 Amber John Noah Sienna 72 Daniel Mike Zo
  • React 代码抛出“TypeError:this.props.data.map 不是函数”

    我刚刚开始用 React 编码 我习惯用 CoffeeScript 编码 我尝试沿着React 文档中提供的教程 http facebook github io react docs tutorial html并为状态更新做了类似的事情 然