1.什么是JSX?
概念:JSX就是Javascript和XML(HTML)的缩写,表示在js代码中编写HTML模板结构,它是React中编写UI模板的方式,如下图就是jsx:
优势:1.HTML的声明式模板写法;2.JS的可编程能力
2.JSX的本质:
浏览器本身是不能识别jsx的,需要通过babel解析工具做解析之后才能在浏览器中运行。
JSX 是一种在 React 中使用的 JavaScript 扩展语法,它允许我们以类似 HTML 的方式编写 JavaScript。为了将 JSX 转换成 JavaScript,我们需要使用 Babel 这样的编译器。
以下是一个简单的例子,展示了如何将 JSX 代码转换为 JavaScript:
JSX的代码:
const element = <h1>Hello, world!</h1>;
转换成 JavaScript 的代码:
const element = React.createElement("h1", null, "Hello, world!");
在实际的项目中,这个转换通常是自动进行的,通过配置 Babel,当你保存文件时,或者在构建应用时,Babel 会自动将 JSX 转换成 JavaScript。
3.JSX中使用JS表达式:
在jsx中可以通过大括号语法{}识别javascript中的表达式,比如常见的变量、函数调用、方法调用等
- 使用引号传递字符串
- 使用js变量
- 函数调用和方法调用
- 使用js对象
代码如下:
// 项目的跟组件
// 根组件APP--->被引入到入口文件index.js中 -->入口文件被渲染到public中的index.html的root节点上
const message = "this is a message";
function getName() {
return "coco";
}
function App() {
return (
<div className="App">
this is react 111a22pp
{/* 使用引号字符串 */}
{"我是引号字符串"}
{/* 使用js中的变量 */}
{message}
{/* 使用函数 */}
{getName()}
{/* 使用方法调用 */}
{new Date().getDate()}
{/* 使用js对象,一般是在处理样式的时候使用 */}
<div style={{ color: "red" }}>this is div</div>
</div>
);
}
export default App;
效果图片如下:
4.jsx中实现列表的渲染
语法:在JSX中可以使用原生JS中的map方法遍历渲染列表
示例代码如下:
const list = [
{ id: "1001", name: "react" },
{ id: "1002", name: "vue" },
{ id: "1003", name: "angular" },
];
function App() {
return (
<div className="App">
this is App
{/* 渲染列表 */}
{/* map 循环那个结构 return 那个结构 */}
{/* 注意事项:加上一个独一无二的key 字符串或者number 一般都是使用id */}
{/* key的作用:react框架内部使用:提升更新性能的 */}
<ul>
{list.map((item) => (
<li key={item.id}>{item.name}</li>
))}
</ul>
</div>
);
}
export default App;
5.JSX中实现条件渲染
1.简单的逻辑可以使用:
可以通过逻辑与运算符&&、三元表达式(?:)实现基础的条件渲染
示例代码如下:
// 项目的跟组件
// 根组件APP--->被引入到入口文件index.js中 -->入口文件被渲染到public中的index.html的root节点上
// jsx实现条件渲染
// 在React中,可以通过 逻辑与运算符&&、三元表达式(?:)实现基础的条件渲染
const isLogin = false;
function App() {
return (
<div className="App">
this is App
{/* 逻辑与 && */}
{isLogin && <span>this is span </span>}
{/* 三元表达式处理 */}
{isLogin ? <span>this is 三元</span> : <span>loading....</span>}
</div>
);
}
export default App;
2.复杂的条件渲染:
解决方案:自定义函数+if判断语句
示例需求:根据一个变量来控制三种不同的展示,代码如下:
// 项目的跟组件
// 根组件APP--->被引入到入口文件index.js中 -->入口文件被渲染到public中的index.html的root节点上
// jsx实现条件渲染
// 在React中,可以通过 逻辑与运算符&&、三元表达式(?:)实现基础的条件渲染
const isShow = 2; //有三种状态1,2,3
function getShowData() {
if (isShow === 1) {
return <div>我是状态1</div>;
} else if (isShow === 2) {
return <div>我是状态2</div>;
} else {
return <div>我是状态3</div>;
}
}
function App() {
return (
<div className="App">
this is App
{getShowData()}
</div>
);
}
export default App;