React 从零开始学习(四)—— 组件交互

2023-11-19

上一节,实现了把一个 prop 从父组件 Board “传递”给了子组件 Square

React 应用中,数据通过 props 的传递,从父组件流向子组件。(这点跟 vue 是一样的)

然后,跟着教程给组件添加交互功能。

给组件添加交互功能

修改 Square.js文件,给按钮添加 onClick事件。

通常我会用箭头函数来进行事件处理,因为有时候函数中 this 会造成一些困扰。

import React from 'react'
import '../assets/css/Square.css'
class Square extends React.Component {
  render () {
    return (
      <button className="square" onClick={() => alert('click')}>
        {this.props.value}
      </button>
    )
  }
}
export default Square

点击格子,会触发click事件,如下图所示:
在这里插入图片描述
接下来,来应用一下 this.statethis.setState

React 组件的构造函数中设置 this.state 来初始化 state

this.state 应该被视为一个组件的私有属性。所以,就在 this.state 中存储每个方格的值,并且通过 onClick 事件在方格被点击的时候,修改这个值。

JavaScript class 中,每次定义其子类的构造函数时,都需要调用 super 方法。因此,在所有含有构造函数的的 React 组件中,构造函数必须以 super(props) 开头。

import React from 'react'
import '../assets/css/Square.css'
class Square extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      value: null
    };
  }
  render () {
    return (
      <button className="square" onClick={() => this.setState({ value: 'X' })}>
        {this.state.value}
      </button>
    )
  }
}
export default Square

Squarerender 方法中,buttononClick 事件中调用 this.setState,可以实现在每次 button 被点击的时候通知 React 重新渲染 Square 组件。

每次在组件中调用 setState 时,React 都会自动更新其子组件。

效果如下图所示:
在这里插入图片描述

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

React 从零开始学习(四)—— 组件交互 的相关文章

随机推荐

  • 数据仓库灵魂30问之数仓基础理念理解

    主题 主题是一个抽象概念 是在较高层次上将数据综合 归类并进行分析利用的抽象 每一个主题都对应一个宏观的分析领域 在实际上 每一个主题对应这个分析领域的所有的分析对象 比如销售主题对应所有和销售这个领域有关的数据 主题域 主题域通常是联系较
  • 效果奇特的HTML5动画,12个效果奇特的HTML5动画赏析

    本文将为大家分享12个效果奇特的HTML5动画 HTML5强大的动画特性可以让你的网页变得更加生动和富有活力 交互性也会进一步得到提高 一起来看看下面的这些HTML5动画案例 没个案例都提供源代码下载 1 HTML5 Canvas瀑布动画
  • KVM源代码分析1:基本工作原理

    http www oenhan com kvm src 1 13年的时候准备挖 KVM源代码分析 的坑 陆陆续续2年过去了 坑也没有填上 当时是因为对KVM了解的肤浅 真正的理解必然要深入到代码级别 所谓 摈弃皮毛 看到血肉 看到真相 当时
  • CH347读写SPI Flash

    前面耽搁了几天 今天终于把CH347 SPI接口调试好了 CH347动态库中SPI接口函数如下 typedef struct SPI CONFIG UCHAR iMode 0 3 SPI Mode0 1 2 3 UCHAR iClock 0
  • SD卡系列之---SD初始化(SPI)

    SD卡分为SDIO模式与SPI模式 SDIO模式使用SD总线协议 使用4根数据线进行数据传输 SPI使用1收1发2根数据线数据传输 理论上SDIO模式会比SPI模式速度快4倍 但SDIO模式还牵扯到CRC校验位的计算 所以 如果使用CPU有
  • 高防cdn和高防服务器的区别,有什么不一样

    CDN通俗的理解就是网站加速 可以解决跨运营商 跨地区 服务器负载能力过低 带宽过少等带来的网站打开速度慢等问题 一个网站的服务器性能比较差 负载能力有限 优势面临突发流量 招架不住 直接导致服务器奔溃 网站打不开 CDN 跟 高防服务器
  • 快速玩转 Llama2!阿里云机器学习 PAI 推出最佳实践

    前言 近期 Meta 宣布大语言模型 Llama2 开源 包含7B 13B 70B不同尺寸 分别对应70亿 130亿 700亿参数量 并在每个规格下都有专门适配对话场景的优化模型Llama 2 Chat Llama2 可免费用于研究场景和商
  • DesktopUI与ZeroTierOne的数据交互机制分析

    分析源码 梳理了一个调用关系图
  • 用python绘制RC低通滤波器bode图

    用python绘制RC低通滤波器bode图 Bode图 Bode图 国内有译作 伯德图 也有译作 波特图 是一种用于描述线性系统的频率响应的图形工具 频率响应是指系统对不同频率的输入信号的响应程度 通常用幅度和相位来表示 Bode图以对数坐
  • layui复选框按钮事件(智能去重刷新)

    1 写好复选框 lt input type checkbox value 0 name available title 智能去重 id available lay filter available gt 2 给复选框加事件 form on
  • RMSE数值在什么范围比较好呢

    RMSE Root Mean Squared Error 数值越小越好 通常来说 对于大多数应用来说 RMSE的值在0 1到1之间是可以接受的 当然 这取决于具体的应用和数据 如果数据本身具有很大的方差 那么RMSE的值就会更大
  • 如何制作静态和动态链接库-小白入门

    1 gcc编译过程 gcc为GNU编译套件 GNU Compiler Colletion 2 gcc编译命令 0 o 指定生成目标文件 00 O 设定优化级别 123越大越高 1 I 指定头文件目录 2 D 指定宏 避免修改源代码 3 g
  • 《我的世界》Python编程入门(9) 使用函数建造房子

    一 函数的基本概念 1 1 函数在数学中的概念 函数指一个量随着另一个量的变化而变化 函数的数学形式 y f x f是一种定义好的关系 可以简称为函数 在函数f中 只要x值的确定 那么y的值一定是确定的 y的值随x值的变化而变化 1 2 P
  • 设计模式(5)-适配器模式(Adapter Pattern)

    适配器模式 Adapter Pattern 顾名思义 就像变压器 转接头差不多 就像美国的生活电压是110V 中国是220V 就需要一个变压器将220V转换成110V 或者一个Type C接口想插如USB接口的东西 你就需要一个转换器 而这
  • [附源码]JSP+ssm计算机毕业设计小区疫情物资配送管理系统624kg【源码、数据库、LW、部署】

    项目运行 项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEcl
  • LeetCode题目笔记——2331. 计算布尔二叉树的值

    文章目录 题目描述 题目难度 简单 方法一 经典后序遍历 代码 C C Python 总结 题目描述 给你一棵 完整二叉树 的根 这棵树有以下特征 叶子节点 要么值为 0 要么值为 1 其中 0 表示 False 1 表示 True 非叶子
  • 【开源电机驱动】H 桥驱动-软件篇

    原文地址 http www modularcircuits com blog articles h bridge secrets h bridge control 本文为作者翻译校正稿件 含个人理解批注 H bridge Control H
  • 无需更改注册表 实现CHM文件从共享文件中直接打开

    直接上解决方法 无需更改注册表 将整个CHM文件压缩 在压缩文件中打开 chm文件 就可以正常显示相关内容 1 问题描述 压缩前 两台电脑 A是笔记本电脑 win10系统 B是台式电脑 win7系统 在A中设置了共享文件 并共享给了B CH
  • 别光看NB的Github开源项目,你得参考他们去设计自己的架构!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 一 背景引入 首先简单介绍一下项目背景 公司对合作商家提供一个付费级产品 这个商业产品背后涉及到数百人的研发团队协作开发 包括各种业务系统来提供很多强大的业务功能 同
  • React 从零开始学习(四)—— 组件交互

    上一节 实现了把一个 prop 从父组件 Board 传递 给了子组件 Square 在 React 应用中 数据通过 props 的传递 从父组件流向子组件 这点跟 vue 是一样的 然后 跟着教程给组件添加交互功能 给组件添加交互功能