当前位置: 首页 > news >正文

零基础学习React(Html)

一切以官方文档为准

创建一个div容器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>初学React</title>
</head>
<body>
    <div id="app"></div>
</body>
</html>

添加React文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>初学React</title>
    <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script><!--主要文件-->
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script><!--主要文件-->
    <link rel="stylesheet" href="indexCss.css" /><!--css文件导入-->
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/><!--ico图标-->
  </head>
<body>
    <div id="app"></div>
</body>
<script type="text/babel" src="./main.js"></script><!--自己的文件-->
</html>

创建一个 React 组件

function Demo(){
return <h1>Hello World</h1>
}
ReactDOM.render(<Demo/>,document.getElementById("app"))

创建虚拟DOM

const VDOM = (
  <h1>hello word</h1>
)

ReactDOM.render(VDOM,document.getElementById("app"))

JSX语法

id写法

const e = React.createElement;

function Demo(){
    let hello="wo"
    return <h2 id={hello}>hello world</h2>
}

ReactDOM.render(<Demo/>,document.getElementById("app"))

语句中写法

const e = React.createElement;

function Demo(){
    let hello="OK"
    return <h2>hello world{hello}</h2>
}

ReactDOM.render(<Demo/>,document.getElementById("app"))

class添加样式写法
.Toggle_back{
    background-color: orange;
}
function Demo(){
    let hello="wo"
    return <h2 className="Toggle_back" id={hello}>hello world</h2>
}

ReactDOM.render(<Demo/>,document.getElementById("app"))

内联样式style

const VDOM = (
  <h1 style={{color:'red',fontSize: '29px'}}>hello word</h1>
)

ReactDOM.render(VDOM,document.getElementById("app"))
  • 第一个{}表示是要写js表达式
  • 第二个{}表示里面的是对象

JSX语法规则

  • 1、定义虚拟DOM时,不需要写引号
  • 2、标签中混入js表达式时要用引号
  • 3、样式的类名指定不要用class,用className
  • 4、内联样式要用style={{key:value}}
  • 5、虚拟DOM只能有一个根标签
  • 6、标签必须闭合
  • 7、标签首字母
    • (1)若小写字母开头,则将为标签转为html中同名元素,若html中无同名元素(标签)对应的同名标签,则会报错。
    • (2)若大写字母开头,react就会去渲染对应的组件,若组件没定义则会报错。

数组循环

let data = ['亚丝娜','一岐日和','叶佳瑶']
/**
 * 要区分: (js语句(代码))和(js表达式)
 *  表达式: 一表达式会产生一个值,可以放在任何一个需要值的地方
 *      下面都是表达式
 *          (1)  a(变量名)
 *          (2)  a+b
 *          (3)  demo(1)
 *          (4)  arr.map()
 */
const VDOM = (
    <div>
        <h1>Hello World</h1>
        <ul>
            {
                for(let i=0;i<data.length;i++){

                }
            }
        </ul>
    </div>
)

ReactDOM.render(<Demo/>,document.getElementById("app"))
  • 要区分: (js语句(代码))和(js表达式)
    • 表达式: 一表达式会产生一个值,可以放在任何一个需要值的地方
      • 1、下面都是表达式
        • (1) a(变量名)
        • (2) a+b
        • (3) demo(1)
        • (4) arr.map()
        • (5) function test(){}
    • 2、语句(代码)
      • 下面都是语句(代码)
        • (1) if(){}
        • (2) for(){}
        • (3) switch(){case}
let data = [1,3,5,7,9]

let result = arr.map((num/*拿到的每一个值*/)=>{
  //函数体
  return num + 1
})

console.log(result)
const x = function test(){}
所以我们得这么写:
let data = ['亚丝娜','一岐日和','叶佳瑶']

const VDOM = (
    <div>
        <h1>Hello World</h1>
        <ul>
            {
                data.map((item)=>{
                    return <li>{item}</li>
                })
            }
        </ul>
    </div>
)

ReactDOM.render(VDOM,document.getElementById("app"))

但是我们没有key(唯一值)所以我们

let data = ['亚丝娜','一岐日和','叶佳瑶']

const VDOM = (
    <div>
        <h1>Hello World</h1>
        <ul>
            {
                data.map((item,index/*索引值*/)=>{
                    return <li key={index}>{item}</li>
                })
            }
        </ul>
    </div>
)

ReactDOM.render(VDOM,document.getElementById("app"))

相关文章:

  • Yapi简介和部署
  • Python毕业设计开题报告房屋租赁租房数据分析和展示系统
  • 中国多媒体与网络教学学报杂志中国多媒体与网络教学学报杂志社中国多媒体与网络教学学报编辑部2022年第6期目录
  • 2022医药数据采集-整合超过10万个数据信息源
  • 【CentOS】Linux 安装 Anaconda 及配置 Jupyter
  • NPDP含金量高吗?难考吗?
  • CXL.cache 协议详解
  • JQuery系列之样式操作
  • 游戏开发中的按键操作管理2
  • 构建自己的无人驾驶系统
  • js中的同步任务、异步任务、宏任务、微任务
  • 给大家推荐一套 git 工作流
  • JWT解密和python反序列化之[CISCN2019 华北赛区 Day1 Web2]ikun
  • 《用Go语言自制解释器》之第3章 求值
  • C++ - 8月31日 - 约瑟夫环问题
  • 深入了解以太坊
  • Google 是如何开发 Web 框架的
  • Angular 响应式表单之下拉框
  • docker-consul
  • dva中组件的懒加载
  • JavaScript HTML DOM
  • JavaWeb(学习笔记二)
  • java概述
  • LeetCode29.两数相除 JavaScript
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • React 快速上手 - 07 前端路由 react-router
  • Redis字符串类型内部编码剖析
  • Spring Boot MyBatis配置多种数据库
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 百度地图API标注+时间轴组件
  • 初识MongoDB分片
  • 给第三方使用接口的 URL 签名实现
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 前端技术周刊 2019-02-11 Serverless
  • 前端路由实现-history
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 译米田引理
  • ​比特币大跌的 2 个原因
  • ​卜东波研究员:高观点下的少儿计算思维
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (03)光刻——半导体电路的绘制
  • (04)odoo视图操作
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net Winform开发笔记(一)
  • .Net(C#)常用转换byte转uint32、byte转float等
  • @synthesize和@dynamic分别有什么作用?
  • @Transaction注解失效的几种场景(附有示例代码)
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [2669]2-2 Time类的定义
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C#] 如何调用Python脚本程序
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解