反应 for 循环

2024-04-24

我正在学习 JavaScript / React。我正在尝试为 React 网站上的 tic-tac-toe 示例创建一个简单的 for 循环,但到目前为止它还存在问题。奇怪的是,有几个映射示例,但没有 for 循环示例。

无论如何,对于以下内容:

function Row(props){
  function renderSquare (i) {
    return <Square key={i} value={props.squares[i]} onClick={() => props.onClick(i)} />;
  }
  const columns = 3;
  let ss = [];
  for(var a = 0, i = props.counter * columns; a < 3; a++, i++){
    //Test Code
  }
  return (
    <div className="board-row">
      {ss}
    </div>
  );
}

当我替换“测试代码”时,这有效

ss.push(renderSquare(i));

但这失败了

ss.push(<Square key={i} value={props.squares[i]} onClick={() => props.onClick(i)}/>);

第二个选项失败,因为它没有创建“单独的”onClick 元素。我怎样才能让失败的例子发挥作用?


更新#1

Sample https://codepen.io/TriStarGod/pen/mRpVwV?editors=0111

更新#2 我按照@Matthias247的建议将var更改为let,现在它可以工作了:D

function Row(props){
  function renderSquare (i) {
    return <Square key={i} value={props.squares[i]} onClick={() => props.onClick(i)} />;
  }
  const columns = 3;
  let ss = [];
  for(let a = 0, i = props.counter * columns; a < columns; a++, i++){
    ss.push(<Square key={i} value={props.squares[i]} onClick={() => props.onClick(i)}/>);
    //ss.push(renderSquare(i));
    //console.log(i);
  }
  return (
    <div className="board-row">
      {ss}
    </div>
  );
}

我认为问题在于你捕获了i进入元素和onClick关闭。你改变i在 for 循环期间,但最终所有插入的元素都是相同的 ->props.counter + 3.

要修复此问题,您需要为每个元素创建所有捕获值的唯一实例。这正是您所做的renderSquare方法创建一个新实例i在函数体内,现在由元素捕获。

Edit:

Using a let绑定(每次迭代都会创建变量的新实例)也有效:

for (let a = 0, i = props.counter; a < 3; a++, i++) {
    ss.push(<Square key={i} value={props.squares[i]} onClick={() => props.onClick(i)}/>);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反应 for 循环 的相关文章

  • 如何检查是否存在可能的路径?

    我正在开发一个基于 javascript 的实验性游戏 玩家必须在二维平铺地图上移动才能退出 请随意检查这个小提琴并演奏 http jsfiddle net moonlife 74vLd 我只是随机放置障碍物 但有时障碍物会挡住玩家和出口之
  • Chrome 扩展程序可以相互通信吗?

    我正在编写一个Chrome扩展程序 并且想要实现一个接口或api 以便我将来制作的其他扩展程序可以使用它 最终的效果可能如下 分机 B 呼叫extensionA someMethod someParameters 并向分机A发送一些数据 分
  • HTML 和 标签有什么区别?

    HEAD 标签和 BODY 标签有什么区别 大多数 HTML 书籍仅 简短 提及 and 标签 但它们消失得很快 它们会影响浏览器呈现网页的方式吗 另外 它们会影响 javascript 的运行顺序吗 我的意思是 如果我里面有一个javas
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • Dialogflow Fulfillment Webhook 调用失败

    I am new to dialogflow fulfillment and I am trying to retrieve news from news API based on user questions I followed doc
  • 角度垫排序不适用于带点表示法的 matColumnDef

    我正在尝试按列对表进行排序 当我必须过滤另一个结果中的结果时 就会出现问题 我尝试通过括号表示法和点表示法访问该属性 但没有给出结果 还将最终节点放置在 matColumnDef 中 但失败 因为有 2 列同名 table table
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • 转义 \u200b(零宽度空格)和其他非法 JavaScript 字符

    我有一组 JavaScript 对象 我引导到后端模板 以在页面加载时初始化我的 Backbone js 集合 它看起来像这样 作为 Twig 模板 我遇到的问题是某些文本字段包含 u200b 零宽度空格 这会破坏
  • 如何调试超时等待异步 Angular 任务?无法在角度页面上找到元素

    编辑 请注意 在 ernst zwingli 的帮助下 我找到了问题的根源 因此 如果您遇到相同的错误 他指出的修复之一可能会帮助您 我的问题是量角器本身的一个已知问题 如果您认为这可能是您 我已经扩展了我的步骤 以在我最初的问题之后查明问
  • 下一张图片不采用类属性

    我正在使用 Next js 和next image显示图像 但 CSS 在其中不起作用 该图像是 SVG 格式 我已将其放在公共文件夹中 我正在使用 Tailwind CSS 与此一起使用
  • 嵌套 DIV 的类似斑马的 CSS 样式

    我嵌套了 DIV 元素 但我不知道嵌套的级别 我需要每个都有与其父级不同的背景 创建类似斑马的颜色 我只使用两种背景 深色和白色 效果需要类似于在容器中设置奇数和偶数子级的样式 但在我的例子中 子级是嵌套的 我可以使用每个嵌套元素的规则来做
  • 使 Bootstrap Popover 在悬停而不是单击时出现/消失

    我正在使用 Bootstrap 构建一个网站Popover http twitter github com bootstrap javascript html popovers我不知道如何使弹出窗口出现在悬停而不是单击时 我想做的就是当有人
  • 如何从除自身之外的其他(blazor)库引用js/css文件?

    我如何引用 使用位于引用的 blazor 项目中的 css cs 文件 该文件与 host cshtml 中的当前项目不同 我的意思是
  • 标记(Markdown)+ Mermaid(流程图和图表)

    努力去争取 美人鱼 https github com knsv mermaid https github com knsv mermaid跟 共事 标记 https github com chjj marked https github c
  • Vue-Router 抽象父路由

    我正在尝试将当前网站迁移到 vuejs 站点地图必须是 login signup password reset browse search dozens of other routes 由于其中一些路线共享大量 fx 因此我将它们设为父路线
  • PostgreSQL:使用for循环迭代表行,根据当前行检索列值

    我有以下2张表 CREATE TABLE salesperson t salespersonid numeric 4 0 NOT NULL salespersonname character varying 25 salespersonte
  • 如何获取符号名称(文字)?

    以下情况 var myVehicle brand Tesla var isMoving Symbol var currentStatus Symbol myVehicle isMoving true myVehicle currentSta
  • 使圆圈与 d3.js 上的多线匹配相同的颜色过滤?

    我有一个多线图 当按每种水果过滤时会更新 每条线条颜色对应不同的销售年份 在 的帮助下Shashank https stackoverflow com users 5569282 shashank 每个数据点线上的圆圈已添加到组中 而不是直
  • Jquery 以编程方式更改

    文本

    编辑 解决方案是将其添加到个人资料页面而不是性别页面 profile live pageinit function event p pTest text localStorage getItem gender 我在列表视图中有一个带有一些文
  • $ 在 JQuery 中意味着什么

    在下面的 var obj one 1 two 2 three 3 four 4 five 5 each obj function i val console log val 这里是什么意思 是对象吗 是一个别名jQuery对象 函数 它充当

随机推荐

  • 使用 Ant 遍历目录

    假设我有一个包含以下路径的 PDF 文件集合 some path pdfs birds duck pdf some path pdfs birds goose pdf some path pdfs insects fly pdf some
  • 异步 REST API 生成警告

    我正在使用 Spring boot 应用程序 我有一个返回 Callable 的休息控制器 GetMapping fb roles Timed public Callable
  • 在 UIView 子类中调用drawRect

    我已经对 UIView 进行了子类化 并且实现了一个 drawRect 我基本上希望在设置 CGPoint 这是此 UIView 的一个属性 之后调用此 drawRect 我该怎么做呢 这是我的代码 id initWithCoder NSC
  • 根据请求创建 Hibernate-Session

    我刚刚启动了一个简单的 Java 测试项目 它使用 Hibernate 管理一些实体 并提供 REST 接口来操作这些对象并提供一些额外的业务逻辑 REST 接口是使用 RESTEasy 和 Jetty 创建的 到目前为止 一切工作正常 但
  • 如何在不循环的情况下找到小于一个数的最大二的幂? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 如何在不循
  • Python Sci-Kit 学习:多标签分类 ValueError:无法将字符串转换为浮点数:

    我正在尝试使用 scikit learn 0 17 进行多标签分类 我的数据看起来像 training Col1 Col2 asd dfgfg 1 2 3 poioi oiopiop 4 test Col1 asdas gwergwger
  • Android 版 Eclipse 中的“调试为...”

    我是一名 Android 菜鸟 正在 Eclipse Galileo 3 52 环境中自学调试 我有一个小的 hello world 应用程序 可以在模拟器中正常运行 所以现在我想通过设置断点 查看变量等来练习调试 但是 运行 gt 调试为
  • MATLAB:让audioplayer()在函数结束后继续播放

    我正在使用使用以下子函数的代码 function playTone duration toneFreq Generate a tone samplesPerSecond 44100 the bit rate of the tone y si
  • 未安装分发证书/私钥

    使用 Xcode 9 1 构建 iOS 应用程序后 我想将其存档并将其上传到 appStore 进行 beta 测试 但点击按钮后出现以下问题Upload to the App Store 并选择Automatically manage s
  • 在 mvc3 中公开实体或 DTO 以查看的最佳实践是什么?

    我创建了自己定制的大量架构 包括针对不同技术的 n 层 目前正在使用 asp net mvc 框架进行 n 层架构 问题是我在数据访问层有实体框架 由于实体将拥有所有关系元数据和导航属性 因此它变得更重 我觉得直接通过 mvc 视图公开这些
  • 在俄罗斯方块项目中添加其他形状。循环逻辑辅助

    我正在创建一个俄罗斯方块克隆作为个人项目 以帮助我更好地绘制图像 移动图像以及学习碰撞检测 一切都很顺利 但我对让程序在第一个停止移动时向框架添加新的方块形状背后的逻辑感到困惑 到目前为止 我使用随机数生成器随机创建四边形 并将其添加到框架
  • Owin Context 每个请求使用单个实例

    app CreatePerOwinContext DataContext Create 我有上面的行来创建一个数据上下文 当我启动一个新的 MVC 5 项目时 该代码随项目一起提供 同时 我使用 autofac 在我的依赖注册器中为每个请求
  • Dia:图表编辑器:盒子对象的限制?

    如标题所示 我尝试为 hte 3d 图形引擎 ogre3d 开发尽可能少的方案 问题是大图方案 Ogre Root 类需要相当多的从它下降的箭头 用关系箭头连接框的模型是它们只能通过边界周围的特定点 称为 关节 或其他东西 进入 退出 但现
  • 使用像 FILE* 这样的 C 字符串

    我有一个 C 函数 可以从 a 中读取字符流FILE 我怎样才能创建一个FILE 在这种情况下从字符串中 Edit 我认为我原来的帖子可能具有误导性 我想创建一个FILE 来自文字字符串值 因此结果FILE 会表现得好像某处确实有一个包含该
  • 可以在 JavaScript 中强制打印机设置(纸张尺寸)吗?

    我需要将网络应用程序中的页面打印到 8 x 4 索引卡上 IE 不会将打印设置从一份打印保存到下一份打印 那么有没有办法以编程方式强制打印设置 看看这个 CSS3 示例http www w3 org TR css3 page size ht
  • java.lang.IllegalArgumentException:找不到 id 0x7f0c007b 的视图

    我尝试启动一个应用程序项目 现在出现以下错误 我从旁边找到的答案中尝试了很多 但没有发现我的错误 这是输出 E AndroidRuntime FATAL EXCEPTION main Process de christian heinisc
  • Meteor.WrapAsync 不返回值

    我一直在努力工作Meteor WrapAsync我读过了Meteor wrapAsync 语法 https stackoverflow com questions 26058205 meteor wrapasync syntax回答这个视频
  • 如何保护自己免受内存消耗失控导致电脑崩溃的情况?

    我时不时地发现自己做了一些相当愚蠢的事情 导致我的程序分配它可以获得的所有内存 然后分配一些内存 过去 这种情况会导致程序因 内存不足 错误而很快死掉 但现在 Windows 会不遗余力地将这些不存在的内存提供给应用程序 而且实际上显然已经
  • 如何查看JVM中JIT编译的代码?

    有什么方法可以查看 JVM 中 JIT 生成的本机代码吗 一般用法 正如其他答案所解释的 您可以使用以下 JVM 选项运行 XX UnlockDiagnosticVMOptions XX PrintAssembly 根据特定方法进行过滤 您
  • 反应 for 循环

    我正在学习 JavaScript React 我正在尝试为 React 网站上的 tic tac toe 示例创建一个简单的 for 循环 但到目前为止它还存在问题 奇怪的是 有几个映射示例 但没有 for 循环示例 无论如何 对于以下内容