react的jsx的基本语法和创建脚手架

2023-11-05

初始react

react是一个构建用户界面的javascript库

创建一个简单react

第一步:引入核心库

<!-- react开发的核心库,创建虚拟dom对象 -->
<script src="./../js/react.development.js"></script>
<!-- 将虚拟dom转化为html,渲染视图所用 -->
<script src="./../js/react-dom.development.js"></script>

第二步:在真实dom中提供一个挂载点

    <div id="root"></div>

第三步:业务代码

创建虚拟dom对象 - createElement
let el = React.createElement
/*
    三个参数:
        参数1:html标签名称 / 组件名称
        参数2:标签属性,也可以是null,表示没有属性
        参数3:子元素,可以是一个可以多个,可以是标签,字符串,对象,组件....
*/
let vnode = el('div',{
    name:'a',
    // class属性不能用class了,得用className
    className:'active',
    // 事件 用小驼峰命名
    onclick:()=>{}
    },'哈哈')
/*
    将虚拟dom转为真实dom,渲染到页面
    参数1:虚拟dom,也可以是组件
    参数2:挂载点的真实dom
*/
ReactDom.render(vnode,document.querySelector('#root'))

这样的写法看起来很麻烦又不容易读代码,所以提供了一个babel库来解决这个问题,babel库就是把jsx代码解析成js代码的

第一步:引入babel库 (可以从bootstrap中直接应用,也可以下载,这里就不放了,实际用react脚手架不需要我们再这样引入)

第二步:在script标签上加<script type='text/babel'>代码段</script>

第三步:这时候的写法就和我们平常的HTML写法一样了

let vnode = (
        <ul>
            <li>
                <span>任务1</span>
                <span> -- 删除</span>
            </li>
        </ul>
)
ReactDOM.render(vnode,document.querySelector('#root'))

搭建react脚手架

安装前提:nodejs版本14+,npm版本5+

安装命令:npx create-react-app my-app

react组件

1.函数组件:(如果你在vscode中安装jsx插件可用 rfc 快捷键完成代码块搭建)

1. 创建一个函数 function / 箭头函数(推荐)

  2. 函数名 首字母要大写

  3. 必须要有返回值,返回值是一个jsx

  4. 必须通过模块导出

  注意:函数有一个可能的参数,可以接受任意值的数据[props]

2.类组件:(rcc)

 1. 必须要用es6的面向对象创建类 class 创建

  2. 它要继承一个父类[React.Component]

  3. 此类中必须要有一个render方法,此方法一定要返回一个jsx

  4. 导出此类

react组件传值

1.父传子

函数组件

使用自定义属性 子接收用props

props参数可以接收任意类型

import React from 'react';

// 子组件 - 通过解构来获取props中的属性数据也可设置默认值
// const Child = ({title='默认值'}) => {

// 常用
  const Child = props => {
  let { title='默认值', fn, temp } = props
  fn && fn()
  return (
    <div>
      <h3>{title}</h3>
      {temp}
    </div>
  )
}

// 需要传递的组件
const Temp = () => {
  return (
    <center>我是传来的组件</center>
  )
}

const App = () => {
  // 变量
  const title = '传来的child'
  const fn = () => console.log('传来的fn');
  return (
    <div>
      {/* 通过自定义属性,传值给子组件数据 */}
      {/* 啥也不传值 */}
      <Child></Child>
      <hr />
      {/* 传个数据 */}
      <Child title={title}></Child>
      <hr />
      {/* 传个函数 */}
      <Child fn={fn}></Child>
      <hr />
      {/* 传个组件 */}
      <Child temp={<Temp></Temp>}></Child>
    </div>
  );
}

export default App;

类组件

父传子传值和函数组件差不多,但获取需要用this.props

代码参考函数组件,将数据传入用this.数据

绑定事件

函数组件:(函数组件没有this)

{/* 点击事件命名小驼峰 */}
<button onClick={fn}>点我++</button>

类组件:

<button onClick={this.fn}>点我++</button>

注:修改数据不会重新渲染视图,可以用强刷新 this.forceUpdate()

event事件

每个方法中都有一个形参是evt,是触发事件的dom对象,可用它获取值或者操作dom

// 无参数
  // 都会有一个参数evt.是当前触发事件的dom对象
  // 获取输入的值
  fn = (evt) => console.log(evt.target.value)
  // 如果在绑定方法时,用了小括号传参,则event就顺延到后面
  fn1 = id => evt => console.log(id, evt.target.value);
  // 有参数-主动把event对象传入
  fn2 = (id, evt) => console.log(id, evt.target.value)

render函数中

render() {
    return (
      <div>
        无参数:<input type="text" onInput={this.fn} />
        {/* 有小括号传参 */}
        有参数:<input type="text" onInput={this.fn1(100)} />
        {/* react事件中心 绑定事件会主动把event对象传入到实现方法参数中 */}
        主动放参数:<input type="text" onInput={(evt) => { this.fn2(100, evt) }} />
      </div>
    );
  }

注:

如果有小括号传参,则方法需要函数包裹,evt顺延到后面

也可以在绑定事件时添加一个箭头函数包裹,并且把evt形参传递过去(常用)

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

react的jsx的基本语法和创建脚手架 的相关文章

随机推荐

  • vue-cli 项目集成 Jest 单元测试

    前言 前端单元测试对于保证代码质量和稳定性是非常重要的 为什么需要单元测试 检测bug 提升回归效率 保证代码质量 一 框架对比 Mocha 比较灵活成熟 但没有内部集成 需要自主选择断言库和监听库 Jasmine 是 Jest 的底层库
  • 堆,栈、和内存管理

    1 stack 栈 是存在于某作用域 scope 的一个内存空间 memory space 例如当你调用函数 函数本身即会生成一个stack用来放置它所接收的参数 以及返回地址 在函数本身 function body 内声明的任何变量其所使
  • 2023年陕西省《网络建设与运维》技能大赛试题

    项目简介 某集团公司原在北京建立了总公司 后在成都建立了分公司 广东设立了办事处 集团设有产品 营销 法务 财务 人力5个部门 全网采用OSPF RIP ISIS BGP路由协议进行互联互通 集团在北京建立两个数据中心 贵州建立异地灾备数据
  • npm 常见插件安装

    npm 常见插件安装 为方便项目中遇到各种插件的安装 特做以下的积累 持续更新中 1 element ui npm i element ui S 2 vuex npm install vuex 3 vue cli npm install g
  • Flyway简介及使用

    Flyway简介及使用 1 简介 1 1 Flyway是什么 Flyway是一款开源的数据库版本管理工具 它更倾向于规约优于配置的方式 Flyway可以独立于应用实现管理并跟踪数据库变更 支持数据库版本自动升级 并且有一套默认的规约 不需要
  • AngularJS弹出框 $modal的使用

    HTML 注意在Chrome浏览器中会给input添加默认样式 影响到打钩的框出不来 主要是position和影响透明度的opacity
  • 顺序栈的基本操作

    顺序栈的基本操作 08 09 21 21 06 lkm 顺序栈的基本操作 include
  • Android文件存储(例子)

    Android文件存储 例子 Android的文件存储 有I O流的方式存储 与java一样 还有一种Android自己的SharePreferences存储方法 下面看一个例子 用I O流的方式存储方法和SharePreferences存
  • 【嵌入式中的C】寄存器清零和置位操作

    对寄存器中的某一位进行操作 如果是封装到具体功能Bit以及bit组的代码工程 可以直接进行赋值 封装代码的方式可以参看这个链接 嵌入式中的C 联合体 union以及一般使用方式 如果是整个寄存器呢 比如stm32寄存器映射的时候标准库是这么
  • 国际麻将番种介绍(明星三缺一)

    国标版番种介绍 名称 番数 说明及实例 大四喜 88 由4副风刻 杠 组成的胡牌 不计圈风刻 门风刻 三风刻 对对胡 小四喜 幺九刻 缺门 大三元 88 胡牌中 有中发白3副刻子 不计箭刻 双箭刻 小三元 缺门 绿一色 88 由23468条
  • 文本超出部分显示省略号

    我们经常在网站上可以看到以下样式 标题太长 一行显示不下 则会使用省略号来代替 但是事实上 这个省略号并不是打字打上去的 而是使用代码表示出来的 今天则主要介绍如何让文本超出部分显示省略号 1 单行文本超出部分显示省略号 1 1 语法
  • 流程图Drawio宝藏软件(终于可以代替了ProcessOn)

    文章目录 一 上连接开始编辑 二 官网 三 笔者版本 优点一 完全免费无任何使用限制 无需认证 优点二 一款在线的绘图工具也可以安装软件 效果完全相同 优点三 Drawio 是自带30多个国家的语言 包括中文 不需要注册就可以登陆使用 优点
  • java中集合排序的常用方法总结

    前言 1 集合元素为数字 2 集合元素为对象 前言 平常的开发需求中肯定会遇到对集合排序问题 最常见的排序是在持久层中使用sql进行排序 但是由于业务限制或是其他原因 不能在持久层进行排序处理只能在逻辑层处理 那今天就来聊一下如何在逻辑层
  • AXI从设备接口

    AXI从设备接口 可以实现EP应用 即作为PCIe总线主设备通过PCIe总线向主机发起PCIe事务 实现RP应用时 AXI从设备接口可以用于发起I O 配置CFG和延迟内存写DMWr请求 实现EP应用时 该接口连接的客户逻辑 外设 必须具有
  • vue的script的三种写法

    以搜索框为例子 vue2的写法 第一种
  • 2021年阿里巴巴83行代码挑战赛来啦!赢MacBook Pro等好礼

    2021年83行代码挑战赛来啦 点击立即前往 CHERRY机械键盘 代码马克杯 Git 鼠标垫 霸王洗发水等2000份将奖品等你来 本次大赛由阿里云云效团队耗时一个月精心筹备 熬夜加班完成 只为真诚地用代码向所有卓越的程序猿致敬 也向卓越的
  • docker logs命令查看日志

    docker logs 打印详细信息 docker logs mysql 容器名字 NAMES docker logs d6c6e958f022 容器ID CONTAINER ID docker logs f 持续输出日志 持续的输出名为m
  • vscode配置码云

    参考 https blog csdn net watfe article details 79761741 1 通过git init命令把这个目录变成Git可以管理的仓库 建立本地仓库 本地仓库和代码开发的不是同一个 git init In
  • 关于elasticsearch连接时断时续以及Kibana出现server is not ready yet的问题,大坑!

    代码小白 记录自学制作谷粒商城遇到的坑 如有错误请轻喷 1 问题的出现 elasticsearch连接时断时续 在加完分词插件之后 出现了elasticsearch连接失败的情况 但是经过多次刷新之后居然是可以成功连接上去的 查看日志也没发
  • react的jsx的基本语法和创建脚手架

    初始react react是一个构建用户界面的javascript库 创建一个简单react 第一步 引入核心库 第二步 在真实dom中提供一个挂载点 div div 第三步 业务代码 创建虚拟dom对象 createElement let