react 加粗_React入门的家庭作业(1-2)

2023-10-30

作业前准备

React在他的官网上挂了一个入门教程,是做一个xxoo棋的小游戏,在教程的最后留下了6个作业题,现在就来完成一下

准备材料

作业是在已完成教程的基础上做的,所以这里预设已经做好了环境部署,写好了游戏代码(如果没有,可以把这个复制进去),并成功运行了该游戏,如果上面的都准备就绪,那我们就可以开动了

第一题 在游戏历史记录列表显示每一步棋的坐标,格式为 (列号, 行号)

历史记录是保存为数组history的,数组的每一个元素表示每一步棋,现在的要求是对于每一步棋,不仅要显示棋盘的布局(数组squares),还要显示这步棋下在了哪里了,那我们就对【每步棋】这个对象再添加一个坐标(行号row,列号col)

首先,在构造函数constructor中修改代码如下

constructor(props) {

super(props);

this.state = {

history: [{

squares: Array(9).fill(null),

//在这里添加两个新属性,行号和列号 row: null,

col: null,

}],

stepNumber: 0,

xIsNext: true,

}

}

然后,在每次点击棋盘格子时,会触发handleClick()方法,该方法会改变state的值,其中也包括新添加的坐标,所以我们修改handleClick()方法下的this.setState()方法如下

this.setState({

history : history.concat([{

squares : squares,

//这里分别拿格子编号i对棋盘的大小3做商和取余,得到行号和列号 row: parseInt(i/3)+1,

col: i%3+1,

}]),

stepNumber : history.length,

xIsNext : !this.state.xIsNext,

});

最后,我们需要在渲染的时候,把坐标显示出来,修改render()方法下的moves如下

const moves = history.map((step, move) => {

//修改描述文字,在步数move后面加入坐标(行号,列号) const desc = move ?

'Go to move #' + move + ' (' + step.row + ',' + step.col + ')':

'Go to game start';

return (

this.jumpTo(move)}>{desc}

);

});

题目要求格式为 (列号, 行号),但个人感觉行号在前,列号在后更好理解吧。。所以修改了设计

另外这里用到了一个map方法,他可以把一个序列变换成另一个序列,变换的方法是写在形如(x) => {return x;} 的闭包里,其中的x表示序列中的一个元素,在下棋的例子里,对序列history做变换,step就表示每一步棋,所以step具有每步棋的坐标属性

保存,测试一下效果如下,成功

PS 第一问就写这么长,考虑要不要每题都分开写。。。

第二题 在历史记录列表中加粗显示当前选择的项目

这里涉及到条件渲染,如果【这步棋】是当前步(current),那么加粗他,否则不加粗,修改render()方法下的moves如下

const moves = history.map((step, move) => {

const desc = move ?

'Go to move #' + move + ' (' + step.row + ',' + step.col + ')':

'Go to game start';

//判断是否是当前步,返回加粗或不加粗的组件 if(step === current) {

return (

this.jumpTo(move)}>{desc}

);

} else {

return (

this.jumpTo(move)}>{desc}

);

}

});

加粗显示就简单的用标签实现,最终显示效果如下

第二题还蛮简单的。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

react 加粗_React入门的家庭作业(1-2) 的相关文章

  • 一元三次方程求解 蓝桥杯 764

    题目描述 有形如 ax3 bx2 cx d 0 这样的一个一元三次方程 给出该方程中各项的系数 a b c d 均为实数 并约定该方程存在三个不同实根 根的范围在 100至 100 之间 且根与根之差的绝对值 1 要求由小到大依次在同一行输
  • OSI七层网络模型和TCP/IP五层模型

    文章目录 1 OSI的来源 2 OSI七层模型的划分 3 TCP IP五层模型 1 OSI的来源 OSI Open System Interconnect 即开放式系统互联 一般都叫OSI参考模型 是ISO 国际标准化组织 组织在1985年
  • 五大浏览器对应的内核

    写这个文章是为了让自己容易快速找到 简单粗暴 3 晴天雨天不如前端在身边 各浏览器对应的内核 谷歌 Webkit gt blink 现在是blink啦 FireFox Gecko safari webkit opera presto IE
  • 【海思SS626

    目录 一 下载 Ubuntu 18 04 6 LTS 二 VMware17创建虚拟机 三 安装Ubuntu18 04LTS 四 安装其他软件 五 总结 一 下载 Ubuntu 18 04 6 LTS 问题 为什么要下载 Ubuntu18 0
  • 封装cookie、sessionStorage、localStorage公共函数(vue)

    封装cookie sessionStorage localStorage公共函数 vue 通常一个前端项目 我们最常用到的三个浏览器储存有三种 cookie sessionStorage localStorage 这三种各有各的优势 在项目
  • JavaScript遇到的坑

    一 document getElementById返回为null 今天准备学习下canvas画图 于是呢写了如下代码 canvas html
  • 最新的爱心代码已就绪 发射成功 速来领取啦

    哈喽 大家好 我是木易巷 爱情 是每个人都在追求的东西 身为一个IT行业人士 我也会追求爱情 我也会像心爱的人表达感情 只是我所表达的方式与他人有所不同 我的主要战场在计算机上 所以我就想到了用计算机来表达感情 在网页上做爱心 还是会动的爱
  • node.js全栈项目

    一 项目介绍 本项目适合作为一个课程设计或者毕业设计 最终实现了一个完整的博客系统 包括用户的登录 注册 图片上传 文章的发布 富文本编辑器 删除 编辑 修改 列表展示 评论的发布 删除 列表展示 以及实现了用户的文章和评论的后台管理和博客
  • 华为OD机试 - 座位调整(Java)

    题目描述 疫情期间课堂的座位进行了特殊的调整 不能出现两个同学紧挨着 必须隔至少一个空位 给你一个整数数组 desk 表示当前座位的占座情况 由若干 0 和 1 组成 其中 0 表示没有占位 1 表示占位 在不改变原有座位秩序情况下 还能安
  • IntelliJ IDEA全局内容搜索和替换

    IntelliJ IDEA全局内容搜索和替换 大家好 我是洲洲 欢迎关注 一个爱听周杰伦的程序员 关注公主号 程序员洲洲 即可获得10G学习资料 面试笔记 大厂独家学习体系路线等 还可以加入技术交流群 欢迎大家在CSDN后台私信我 本文目录
  • 2023年深度学习服务器配置选购建议

    1 首先确定是放机房机柜 还是放办公室用 机柜选机架式 办公室选塔式 大家也喜欢说工作站 塔式比较安静 如果用GPU运算受卡数限制 4卡以内可以 液冷更静音 2 看做什么用途 用CPU计算 还是GPU计算为主 或者是两者兼顾 如第一性原理
  • PHPStorm常用配置纪录

    PHPStorm 下载及主题样式下载 http www lanmps com lanmps tools html 主题 Preferences gt Appearance Behavior gt Appearance Theme 选择 Da
  • SPLUNK 简单查询语句

    Here is offical document http docs splunk com Documentation SplunkCloud 7 0 2 Search GetstartedwithSearch inputlookup al
  • 【华为OD机试】跳房子1 (C++ Python Java)2023 B卷

    题目描述 跳房子 也叫跳飞机 是一种世界性的儿童游戏 游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格 跳房子的过程中 可以向前跳 也可以向后跳 假设房子的总格数是count 小红每回合可能连续跳的步教都放在数组steps中 请问
  • Intel DDR布线之Tabbed Routing

    一 Overview Tabbed Routing是一种在相邻的平行走线上连接小的梯形凸片 以更积极地控制走线的电容 以管理走线阻抗并补偿结构的电感效应的方法 Tabbed Routing is a method of attaching
  • Ubuntu18.04安装OpenGL依赖库

    sudo apt get install build essential sudo apt get install libgl1 mesa dev sudo apt get install libglu1 mesa dev sudo apt
  • tabpanel页签的机制

    tabpanel页签的机制 页签展现渲染时 只会初始化渲染你所指定的activeTab这个子页签 其他的页签一律不渲染 所以也就不存在form的dom内容 如果没有指定activeTab页签不会初始化任何子页签 那么所有的form都不会得到
  • 【ARIMA-WOA-CNN-LSTM】合差分自回归移动平均方法-鲸鱼优化-卷积神经网络-长短期记忆神经网络研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 ARIMA模型 1 2 鲸鱼优化算法 1 3 卷积神经网络 1 4 LSTM 模型 2 运行结果

随机推荐

  • uniapp Echart X轴Y轴文字被遮挡怎么办,或未能铺满整个容器

    有时候布局太小 使用echarts x轴y轴文字容易被遮挡 怎么解决这个问题呢 或者是未能铺满整个容器 方法1 直接设置 containLabel 字段 options grid containLabel true 方法2 间接设置 但是不
  • IDEA 【基础】 javaweb项目中 将maven的jar包,复制到web项目的 lib 文件夹

    自己在做小型javweb项目的时候经常遇到这种问题 java lang NoClassDefFoundError 明明maven已经添加依赖了 而且项目里面可以正常运行 但是启动tomcat运行的时候 却运行不了 博主琢磨半天 了解到 第三
  • 深度学习实战项目(三)-行人检测重识别yolov5+reid(跑通+界面设计)

    行人检测重识别yolov5 reid 跑通 界面设计 参考源代码 github 权重文件 根据github上面的网盘进行权重下载 检测 将 ReID resnet50 ibn a pth放在person search weights文件下
  • One-Stage Visual Grounding(单阶段语言指示的视觉定位)论文略读_2019-2020

    One Stage Visual Grounding 2019 2020年论文略读 1 Zero Shot Grounding of Objects from Natural Language Queries 2019 ICCV 改进工作
  • Linux 查看显卡型号

    输入以下命令 lspci grep i vga 可以查看显卡型号 但是是一串数字代码 可通过PCI devices网站进行查询 结果如下所示 GeForce RTX 3060 Lite Hash Rate 即为显卡信息
  • 浏览器刷新、关闭页面与统计在线人数

    项目中可能需要统计在线人数 也可能需要在用户在退出时进行用户注销登录 既为统计实时在线人数 也为及时清理暂时不再使用的session 节约资源提高性能 对于以上的情况 若用户使用页面的注销按钮退出登录 那一定万事大吉了 当实际中这种可能性很
  • Java面试题(1)-J2SE基础

    最近在为自己实习准备 看了网上各种面试经验贴 也和身边的小伙伴一起参加了不少牛逼IT企业的面试 这篇文章就将面试遇到的一些比较常见的问题整理一下 给大家一些参考 也为自己整理整理 J2SE基础 1 九种基本数据类型的大小 以及他们的封装类
  • 猿创征文

    猿创征文 国产数据库实战 使用docker部署PolarDB X云原生分布式开源数据库 一 PolarDB X介绍 1 PolarDB X简介 2 PolarDB X特点 二 检查docker版本 三 检查docker配置信息 四 下载Po
  • redis集群原理

    redis是单线程 但是一般的作为缓存使用的话 redis足够了 因为它的读写速度太快了 官方的一个简单测试 测试完成了50个并发执行100000个请求 设置和获取的值是一个256字节字符串 结果 读的速度是110000次 s 写的速度是8
  • MySQL高频面试题

    文章目录 1 什么是MySQL 2 关系型数据库和非关系型数据库 3 数据库三大范式是什么 4 一条 SQL 查询语句是如何执行的 5 引擎 MySQL存储引擎MyISAM与InnoDB区别 MyISAM索引与InnoDB索引的区别 Inn
  • 哈夫曼树带权路径长度

    一 长什么样 左边是普通树 右边是哈夫曼树 图a WPL 5 2 7 2 2 2 13 2 54 图b WPL 5 3 2 3 7 2 13 1 48 可见 图b的带权路径长度较小 我们可以证明图b就是哈夫曼树 也称为最优二叉树 二 怎么生
  • Vue实现swiper轮播组件

    目前市面上有很多轮播组件 但是有的不满足业务需求 因此也需要自己首先轮播组件 以下是一个用vue实现的轮播组件 带动画效果 可以自行设置轮播速度 选择是否需要分页器等 效果如下 思路 结构 一个轮播组件应该由三部分组成 一是轮播的元素 如图
  • 如何在内存中执行二进制代码之win平台

    大家可能会很好奇 我们的任意exe程序 不就是在内存中执行的二进制机器码吗 不 今天我要说的是 我们如何把实现指定功能的一段二进制机器码 放到我们的程序中 然后在需要的时候 直接调用它 当然 这段代码也有其他用途 故而有了shell cod
  • 公众号分享

    配置 gt 登录公众号 gt 设置与开发 gt 公众号设置 gt 功能设置 gt js安全域名域名 gt 网页授权域名 1 先拿集成微信 js 路径写自己的 import wxshare from common js wxShareModu
  • 【树莓派之旅】第01期:一根网线搞定树莓派可视化界面

    一次偶然的机会接触到了树莓派 于是就购了一个板子 入手快两个月了 由于一直忙于工作的事情 所以也就没折腾 今天拿出来的时候发现要想把树莓派运行起来还需要一些其他外接设备 一时也没去某宝或某东上采购 就利用手头现有的资源玩一下 于是就有了此文
  • Sentinel实现动态配置的集群流控的方法

    这篇文章主要介绍了Sentinel实现动态配置的集群流控 本文给大家介绍的非常详细 对大家的学习或工作具有一定的参考借鉴价值 需要的朋友可以参考下 介绍 为什么要使用集群流控呢 相对于单机流控而言 我们给每台机器设置单机限流阈值 在理想情况
  • 部署 - 前端部署https服务,并配置安全证书

    项目中要实现跨tab复制 剪切 粘贴 所以涉及到操作剪切板的操作 选用了navigator clipboard 但是该api有必须在https的服务下才能用 所以就需要把项目部署城https服务 vue cli中可以配置webpack达到启
  • Android OkHttp源码阅读详解一

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 前言 源码阅读基于okhttp 3 10 0 Android中OkHttp源码阅读二 责任链模式 implementation com
  • 注解实现CRUD

    CRUD 我们可以在工具类创建的时候实现自动提交事务 这个是在MybatisUtils工具类里面的弄的 public static SqlSession getSqlSession return sqlSessionFactory open
  • react 加粗_React入门的家庭作业(1-2)

    作业前准备 React在他的官网上挂了一个入门教程 是做一个xxoo棋的小游戏 在教程的最后留下了6个作业题 现在就来完成一下 准备材料 作业是在已完成教程的基础上做的 所以这里预设已经做好了环境部署 写好了游戏代码 如果没有 可以把这个复