react-2 jsx的学习

1.什么是JSX?

概念:JSX就是Javascript和XML(HTML)的缩写,表示在js代码中编写HTML模板结构,它是React中编写UI模板的方式,如下图就是jsx:
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中的表达式,比如常见的变量、函数调用、方法调用等

  1. 使用引号传递字符串
  2. 使用js变量
  3. 函数调用和方法调用
  4. 使用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方法遍历渲染列表
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;
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值