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

步入React前厅 - 组件和JSX

目录

扩展学习资料

购物车应用

编写React元素

@/src/index.js

创建组件

@/src/components/listItem.jsx

@/src/App.js

理解JSX【JavaScriptXML】

JSX是什么

JSX规则

@/src/components/listItem.jsx

使用Fragments

@/src/App.js

为何要使用Fragments

表格中使用Fragment

渲染结果

小结

温习所学知识


扩展学习资料

预习资料名称

链接

MVN Node版本管理

https://github.com/nvm-sh/nvm    

Create React App

Create React App

Bootstrap

全局 CSS 样式 · Bootstrap v3 中文文档 | Bootstrap 中文网  

购物车应用

编写React元素

@/src/index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
// import App from './App';
import 'bootstrap/dist/css/bootstrap.css'
// react元素 == javascript object
const element = <h1>hello react!!!</h1>
console.log(element)
// 将react虚拟dom加载到实际的浏览器页面上
ReactDOM.render(// 严格模式// 使用StrictMode的优点:// 识别不安全的生命周期组件// 有关旧式字符串ref用法的警告// 关于使用废弃的 findDOMNode 方法的警告// 检测意外的副作用// 检测过时的 context API<React.StrictMode>{/* <App /> */element}</React.StrictMode>,document.getElementById('root')
);

创建组件

  1. 应用位置:树状结构图里面位置是什么【子组件,父组件,兄弟组件】
  2. 确定参数:输入的参数和哪些初始参数复用的场景【输入参数,初始参数,复用场景】
  3. 确定类型:函数组件? Class组件【函数组件、类组件】
  4. 组件内容:组件返回哪些内容

@/src/components/listItem.jsx

import React, { Component } from 'react';
class ListItem extends Component {render() { return (<h1>我是组件Hello React !!!</h1>);}
} 
export default ListItem;

@/src/App.js

import React from 'react';
import './App.css';
import ListItem from "./components/listItem";
function App() {return (<div className="container"><ListItem /></div>);
}
export default App;

理解JSX【JavaScriptXML】

JSX是什么

JSX是Javascript的语法扩展,使用XML标记的方式直接声明界面

模板引擎语言:Angular、Vue里的语法template语法、NodeJS

  • 不是模板引擎语言【带语法糖的ATX抽象语法树,语法糖的处理放在了构建阶段,运行时不需要解析】
  • 声明式方式创建UI,处理UI逻辑【这样可以很好的描述UI,呈现出它应有的交互的本质的形式】
  • 遵循JavaScript语法,无学习门槛

react关注点分离

Babel 是一个 JavaScript 编译器

JSX背后的原理

JSX规则

  • 在JSX中嵌入表达式,用{}包裹
  • 大写开头作为定义组件,小写tag为原生dom节点
  • JSX标签可以由特定属性和子元素
  • JSX只能有一个根元素

@/src/components/listItem.jsx

import React, { Component } from 'react';
const product = {id:1,name:"Sony 65寸高清液晶大电视",price: 3999,stock: 20 // 库存
}
let count = 0
class ListItem extends Component {manageCount() {return count + "个";}render() { return (<div className="row mb-3"><div className="col-6 themed-grid-col">{product.name}</div><div className="col-1 themed-grid-col">¥{product.price}</div><div className="col-2 themed-grid-col">{this.manageCount()}</div></div>)}
}export default ListItem;

使用Fragments

@/src/App.js

import React from 'react';
import './App.css';
import ListItem from "./components/listItem";
function App() {// React.createElement()return (<><div className="container"><ListItem /><ListItem /><ListItem /><ListItem /></div><div className="container"><ListItem /><ListItem /><ListItem /><ListItem /></div></>);
}
export default App;

为何要使用Fragments

  • 可以包含并列的子元素
  • 编写表格组件,包裹子元素html生效

表格中使用Fragment

// 父组件
class Table extends React.Component {render() {return (<table><tr><Columns /></tr></table>                      );}
}
// 子组件
class Columns extends React.Component {render() {return (<><td>Hello</td><td>World</td></>                      );}
}

渲染结果

<table><tr><td>Hello</td><td>World</td></tr>
</table>  

小结

  1. React元素
  2. 创建组件
  3. JSX语法
  4. Fragment

温习所学知识

1、将Vue相关JSX练习中的棋盘练习在React中练习。

2、将写好的Jsx在Babel中转义,了解解析过后的代码。

http://www.lryc.cn/news/112447.html

相关文章:

  • SpringBoot整合Sfl4j+logback的实践
  • IT 基础架构自动化
  • Docker入门——保姆级
  • MONGODB ---- Austindatabases 历年文章合集
  • 菠萝头 pinia和vuex对比 pinia比vuex更香 Pinia数据持久化及数据加密
  • 机器学习笔记 - 关于GPT-4的一些问题清单
  • sql 参数自动替换
  • Linux——设备树
  • 网络:从socket编程的角度说明UDP和TCP的关系,http和tcp的区别
  • 大数据技术之Hadoop:HDFS集群安装篇(三)
  • 移动开发最佳实践:为 Android 和 iOS 构建成功应用的策略
  • 2023年第二届网络安全国际会议(CSW 2023)
  • 【100天精通python】Day23:正则表达式,基本语法与re模块详解示例
  • C++ 派生类成员的标识与访问——作用域分辨符
  • SQL注入实操三(SQLilabs Less41-65)
  • (亲测解决)PyCharm 从目录下导包提示 unresolved reference(完整图解)
  • 【AI量化模型】跑通baseline
  • ElasticSearch:全文检索及倒排索引原理
  • blk_mq_alloc_tag_set函数struct blk_mq_tag_set结构体学习
  • Windows搭建Snort环境及使用方式
  • Android network — iptables四表五链
  • 【C++从0到王者】第十六站:stack和queue的使用
  • centos7 部署Tomcat和jpress应用
  • Unity Shader:常用的C#与shader交互的方法
  • luajit 使用 clang编译的坑
  • [SWPUCTF 2021 新生赛]Do_you_know_http
  • web前端之CSS
  • HarmonyOS元服务开发实践:桌面卡片字典
  • xLua学习
  • ​Web3到底是个啥?