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

react的基础使用

react中为什么使用jsx


React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合,比如,在 UI 中需要绑定处理事件、在某些时刻状态发生变化时需要通知到 UI,以及需要在 UI 中展示准备好的数据。

react认为将业务代码和数据以及事件等等 需要和UI高度耦合。所以采用了jsx。

什么是jsx


jsx是javascript的语法扩展,类似模板写法格式(类似模板引擎)

JSX是一种JavaScript的语法扩展,首先运用于React中,其格式比较像是模版语言

特点:

React认为渲染逻辑本质上与其他UI逻辑内在耦合,比如,在UI中需要绑定处理事件、在某些时刻状态发生变化时需要通知到UI,以及需要在UI中展示准备好的数据。 [4]

JSX可以使用引号来定义以字符串为值的属性:

const element =

;

也可以使用大括号来定义以JavaScript表达式为值的属性:

const element =

;

因为JSX的特性更接近JavaScript而不是HTML,所以React DOM使用camelCase(小驼峰)命名来定义属性的名称,而不是使用HTML的属性名称。例如:class变成了className,而tableindex则对应着tableIndex

需要注意:  js+html 混合写法
属性命名:小驼峰
属性绑值:{}  直接赋值 ""
元素内容中写js代码:
<div>
{//代码
}
</div>
react组件中jsx写法格式:
function App() {let name = "小花";let cname = "active";return (<div className="App">测试<div className={cname}>{name}</div></div>);
}

jsx可以防止注入攻击:

function App() {let name = "小花";let cname = "active";//注入脚本let str="<input src='www.***.com'/>";return (<div className="App">测试<div className={cname}>{name}</div><div>{str}</div></div>);
}

react中组件


  1. 函数组件

  1. 类组件

组件的书写格式遵循es5  es6

函数组件:

function App() {//必带返回return <div className="App">测试</div>;
}let App = () => {return <div className="App">测试</div>;
};
在mainjs文件中引入app组件

该函数被执行 ,获取到的是编译之后的jsxDEV(‘div’,{className:’’})格式。

jsxDEV('div',{ className: "active" })
let ele=React.createElement("div", { className: "active" });
console.log(ele);

类组件写法:

import React from "react";
console.log(React.Component);
//es6 class  继承  react component class类
class App extends React.Component {constructor(props) {super(props);//执行父类的构造}//渲染函数render() {return <div>测试</div>;}
}export default App;
export default App;

函数组件和类组件的使用场景


函数组件主要用于UI界面的渲染   react  16.8以前
16.8版本之后react  hooks API  函数可以写业务逻辑了。
类组件主要做复杂的业务逻辑的。
http://www.lryc.cn/news/40389.html

相关文章:

  • letcode 4.寻找两个正序数组的中位数(官方题解笔记)
  • 【面试题系列】K8S常见面试题
  • 字符函数和字符串函数(上)-C语言详解
  • 全连接神经网络
  • 深度学习目标检测ui界面-交通标志检测识别
  • ubuntu不同版本的源(换源)(镜像源)(lsb_release -c命令,显示当前系统的发行版代号(Codename))
  • linux入门---程序翻译的过程
  • springboot复习(黑马)
  • C++指针详解
  • tauri+vite+vue3开发环境下创建、启动运行和打包发布
  • 安卓进阶系列-系统基础
  • 10 Wifi网络的封装
  • 手把手的教你安装PyCharm --Pycharm安装详细教程(一)(非常详细,非常实用)
  • 开发板与ubantu文件传送
  • 如何成为一名优秀的网络安全工程师?
  • 面试问题之高并发内存池项目
  • 如果阿里巴巴给蒋凡“百亿补贴”
  • Linux版本现状
  • Winform中实现保存配置到文件/项目启动时从文件中读取配置(序列化与反序列化对象)
  • 基于python的超市历年数据可视化分析
  • GPT-4技术报告
  • 前端性能优化
  • 尚医通-(三十三)就诊人管理功能实现
  • 《Spring Boot 趣味实战课》读书笔记(二)
  • Spring Cloud -- GateWay
  • 【C语言】memcpy , memset等内存操作函数使用方法与注意事项
  • 尚融宝04-mybatis-plus插件和条件构造器
  • 面试重难点问题(C++)
  • androidx.appcompat 升级到1.5.1 趟过的坑
  • [C++]反向迭代器