安装react的脚手架

1==>行 npx create-react-app myreactdemo01
解释一下: npx create-react-app 你的项目名称
npx create-react-app 是固定不变的
2==>然后执行回车
3==>cd myreactdemo01
4==>npm start

简单介绍一下npx

npm 从5.2版开始,增加了 npx 命令.
npx 想要解决的主要问题,就是调用项目内部安装的模块。
也就是说安装了node就有npx。

学习jsx

在学习jsx的时候,需要注意的点哈
React元素的属性名使用驼峰命名法(小驼峰)
特殊的属性名 class==>className; for==>Htmlfor
使用小括号()包裹jsx是为了避免js中自动插入分号的陷阱。

jsx的简单使用-使用变量

//index.js 文件 这个文件是src下的文件。
//我使用这个文件是为了方便练习React
react中使用变量调用方法是 { 变量 }
react中使用方法是 { 方法名() } import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
// jsx的书写
const name='我是变量'
const contHtml = (
<h2>
<p className='p-header'>开始学习React--class变成className </p>
<p className='p-cont'>开始使用变量 {name} </p>
</h2>
) // root在index.html中可以找到这个变量哈
ReactDOM.render(contHtml, document.getElementById('root'))

jsx中也可以去调用函数哈

//index.js 文件

import ReactDOM from 'react-dom'; //这个是react的虚拟dom
const isLoadFlag = true
const locadData = () => {
if (isLoadFlag) {
return <div>加载中loading...</div>
} else {
return <div>数据已经加载完了哈</div>
}
}
// jsx中也可以去调用函数哈
const contHtml = (
<div>
我在jsx去调用函数哈 {locadData() }
<p>这里面是jsx,因为可以返回jsx</p>
</div>
)
ReactDOM.render(contHtml, document.getElementById('root'))

优化上面的哈-jsx中三元运算的使用

import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
const isLoadFlag = true const locadData = () => {
return isLoadFlag ? ( <div>加载中loading...</div> ) : <div>数据已经加载完了哈</div>
}
// jsx中也可以去调用函数哈
const contHtml = (
<div>
我在jsx去调用函数哈 {locadData() }
<p>这里面是jsx,因为可以返回jsx</p>
</div>
)
ReactDOM.render(contHtml, document.getElementById('root'))

jsx的列表渲染类似 v-for

import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
const listArr = [
{ id: 1, name: '张三2' },
{ id: 2, name: '张三3' },
{ id: 3, name: '张三4' },
]
// jsx中也可以去调用函数哈
const contHtml = (
<ul>
{/* 给遍历的那个元素添加上key值。key最好是唯一值哈 跟vue是一样的哈 */}
{
listArr.map(item => <li key={item.id}> 姓名 {item.name}</li> )
}
</ul>
)
ReactDOM.render(contHtml, document.getElementById('root')) 需要注意的是:要避免使用索引值(index)作为key

jsx中样式的处理-使用行间样式

import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
// 使用行间样式
const contHtml = (
<h1 style={{ color:'red', background:'pink', height:'100px'}}>
我是内容
</h1>
// 第一个大括号表示的是jxs,第二个表示的是一个对象,以键值对的形式处理
)
ReactDOM.render(contHtml, document.getElementById('root'))

jsx中样式的处理【推荐使用 className 】

import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
// 引入这个文件对应的css,css中有myh1css样似的描述。推荐使用这一种
import './index.css'
// 使用行间样式
const contHtml = (
<h1 className='myh1css' id='h1Id'>
我是内容
</h1>
// 第一个大括号表示的是jxs,第二个表示的是一个对象,以键值对的形式处理
)
ReactDOM.render(contHtml, document.getElementById('root'))

动态新增新增class

<!-- 需求描述如果type==1,类名时css1;否者是css2 -->
<!-- 功能实现如下 --> import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
const listArr = [
{ type: 1, name: 'react',id:1 },
{type:2,name:'vue',id:3},
]
const contHtml = (
<ul>
{listArr.map(item =>
<li
key={item.id}
className={item.type==1 ? 'css1' : 'css2'}
>
{item.name}
</li>
)}
</ul>
)
ReactDOM.render(contHtml, document.getElementById('root'))

动态新增className,同时有默认样式

import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom const listArr = [
{ type: 1, name: 'react',id:1 },
{type:2,name:'vue',id:3},
]
const name = '我是变量'
// 默认有default-css1,default-css2,同时动态添加其他
const contHtml = (
<ul>
{listArr.map(item => <li key={item.id} className={[
'default-css1',
'default-css2',
item.type == 1 ? 'css1' : 'css2'
]}> {item.name}</li>)}
</ul>
) // root在index.html中可以找到这个变量哈
ReactDOM.render(contHtml, document.getElementById('root'))

学习React中的jsx-保证你看的明明白白的更多相关文章

  1. 学习React从接受JSX开始

    详情参考官方JSX规范 虽然JSX是扩展到ECMAScript的类XML语法,但是它本身并没有定义任何语义.也就是说它本身不在ECMAScript标准范围之内.它也不会被引擎或者浏览器直接执行.通常会 ...

  2. react中的jsx详细理解

    这是官网上的一个简单的例子 const name = 'Josh Perez'; const element = <h1>Hello, {name}</h1>; ReactDO ...

  3. 在 React 中使用 JSX 的好处

    优点: 1.允许使用熟悉的语法来定义 HTML 元素树: 2.提供更加语义化且移动的标签: 3.程序结构更容易被直观化: 4.抽象了 React Element 的创建过程: 5.可以随时掌控 HTM ...

  4. 学习React中遇到的问题

    1.执行eject后,再次启动项目报错 情景:使用create-react-app搭建了项目,启动没有问题,然后执行 $ yarn eject 暴露出webpack配置文件等,再次 $ yarn st ...

  5. Vue3.2中的setup语法糖,保证你看的明明白白!

    vue3.2 到底更新了什么? 根据原文内容的更新的内容主要有以下 5 块: 1.SSR:服务端渲染优化.@vue/server-renderer包加了一个ES模块创建, 与Node.js解耦,使在非 ...

  6. vue下一代状态管理Pinia.js 保证你看的明明白白!

    1.pinia的简单介绍 Pinia最初是在2019年11月左右重新设计使用Composition API的 Vue 商店外观的实验. 从那时起,最初的原则相同,但 Pinia 适用于 Vue 2 和 ...

  7. 国庆总结:echarts自定义颜色主题,保证你看的明明白白

    为什么需要使用颜色主题 随着用户审美越来越高,不再是过去那样只注重功能. 所以对界面的颜色样式都具有一定的审美要求 此时颜色是否好看就非常重要了 因为人都是视觉动物 对界面的第一印象肯定都是颜色. 如 ...

  8. vue混入mixin的使用,保证你看的明明白白!

    场景描述 有些时候,我们发现有些组件部分功能代码是几乎是一样的. 这个时候,我们就可以将相同的逻辑代码抽离出来 此时我们的主角混入mixin就登场了 下面我们有a-test和b-test两个组件,点击 ...

  9. node使用node-xlsx实现excel的下载与导入,保证你看的明明白白

    需求简介 很多时候,我们都会有这样一个业务. 将列表中的数据导出为excel. 这样做的目的是为了方便查看,同时可以保存在本地归档. 还可以将导出的Excel后的数据进行加工. node-xlsx 的 ...

  10. react学习(一)--JSX简介

    由于在中国银联实习的项目要用到react,所以不得不硬着头皮把react学习一下.这是要往全栈发展吗0.0 正文: 一个最简单的React例子如下, ReactDOM.render( <h1&g ...

随机推荐

  1. 带你了解 HBase 数据模型和 HBase 架构

    摘要:HBase 是一个面向列的 NoSQL 数据库. 本文分享自华为云社区<HBase 架构:HBase 数据模型 & HBase 读/写机制>,作者: Donglian Lin ...

  2.  iOS代码混淆-从入门到放弃

    ​ iOS代码混淆-从入门到放弃 目录 1. 什么是iOS代码混淆? 2. iOS自动代码混淆的方法是什么? 3. iOS代码混淆的作用是什么? 4. 怎么样才能做到更好的iOS代码混淆? 总结 参考 ...

  3. ubuntu下完全卸载重装docker教程

    操作需在管理员权限下运行 卸载docker 1.删除docker的所有包 apt-get autoremove docker docker-ce docker-engine docker.io con ...

  4. C# .NET Socket SocketHelper 高性能 5000客户端 异步接收数据

    网上有很多Socket框架,但是我想,C#既然有Socket类,难道不是给人用的吗? 写了一个SocketServerHelper和SocketClientHelper,分别只有5.6百行代码,比不上 ...

  5. UVA - 1594 :Ducci Sequence (set应用)

    给定n元组(a1,a2,...,an),ai均为整数,得到下一个序列为(|a1-a2|,|a2-a3|,...,|an-a1|),如此循环下去,必定会出现全零序列或重复序列. 现要求判断给定序列是全零 ...

  6. 简单实现el-dialog的拖拽功能

    首先还是要明确几个概念,这里通过修改css并截图给大家介绍下,理解了这几个概念,代码写起来会得心应手许多. clientWidth,clientHeight scrollWidth,scrollHei ...

  7. DataGrip连接MySql数据库失败:dataGrip java.net.ConnectException: Connection refused: connect.

    1.问题 报错:dataGrip java.net.ConnectException: Connection refused: connect. 详细错误:[08S01] Communications ...

  8. Linux 中常用的基础命令

    by emanjusaka from https://www.emanjusaka.top/2024/01/linux-base-command 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下原文 ...

  9. 【BUS】LIN Bus

    概述 随着汽车内电子设备的增多,市场上对于成本低于 CAN 的总线的需求日益强烈,不同的车厂相继开发各自的串行通信(UART/SCI)协议,以在低速和对性能要求不高的场合取代CAN.由于不同车厂定义的 ...

  10. java - ArrayList的使用

    package list; import java.util.ArrayList; import demo.Hero; public class ListTs { public static void ...