React 入门:JSX语法详解

简介

React是一个用于构建用户界面的JavaScript库,它引入了JSX语法,使得你可以在JavaScript代码中编写类似HTML的结构。JSX在编译后会被转换成合法的JavaScript对象。

JSX基础

JSX是一种看起来像HTML的JavaScript语法扩展。它并不直接被浏览器执行,而是通过Babel这样的编译器转换成JavaScript。

基本语法

jsx 复制代码
const element = <h1>Hello, world!</h1>;

在React中,你可以像这样创建一个React元素。

表达式

JSX支持在花括号{}中嵌入任何有效的JavaScript表达式。

jsx 复制代码
const name = 'Kimi';
const element = <h1>Hello, {name}!</h1>;

组件

在JSX中,你可以使用小写标签来表示HTML元素,而使用大写标签来表示React组件。

jsx 复制代码
function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

const element = <Welcome name="Kimi" />;

JSX与HTML的区别

  1. 类名 vs className :在JSX中,class需要替换为className

    jsx 复制代码
    const element = <div className="my-div">Hello, world!</div>;
  2. 事件处理:JSX中的事件处理使用驼峰命名法。

    jsx 复制代码
    function handleClick() {
      console.log('Clicked!');
    }
    
    const element = <button onClick={handleClick}>Click me</button>;
  3. 布尔属性 :布尔属性如果在JSX中为true,则不需要提供属性值。

    jsx 复制代码
    const element = <input type="checkbox" checked />;

条件渲染

JSX中的条件渲染与JavaScript中的条件语句相同。

jsx 复制代码
const element = (
  <div>
    {condition ? <ChildComponent /> : <AnotherComponent />}
  </div>
);

列表渲染

使用JavaScript的map()函数来渲染列表。

jsx 复制代码
const items = ['item1', 'item2', 'item3'];
const element = (
  <ul>
    {items.map(item => (
      <li key={item}>{item}</li>
    ))}
  </ul>
);

样式

在JSX中,你可以使用行内样式,或者通过className来引用CSS类。

jsx 复制代码
const element = (
  <div style={{ color: 'red', fontSize: 20 }}>
    Hello, world!
  </div>
);

函数作为子元素

你可以将函数作为子元素传递给组件,这在处理事件时非常有用。

jsx 复制代码
const element = <ParentComponent onClick={handleClick} />;

结论

通过这篇教程,你应该对React的JSX语法有了基本的了解。JSX使得React的应用开发更加直观和声明式,是学习React不可或缺的一部分。

相关推荐
山河木马6 分钟前
矩阵专题3-怎么创建投影矩阵(uProjectionMatrix)
javascript·webgl·计算机图形学
泯泷2 小时前
第 2 篇:设计第一套字节码:Opcode、Instruction 与 Constant Pool
前端·javascript·安全
泯泷2 小时前
第 1 篇:从 1 + 2 开始:亲手写出第一台 JSVM
前端·javascript·安全
朦胧之3 小时前
页面白屏卡住排查方法
前端·javascript
Ruihong3 小时前
Vue withDefaults 转 React:VuReact 怎么处理?
vue.js·react.js·面试
犇驫聊AI3 小时前
Chrome DevTools MCP + Claude Code 自定义skills生成接口代码生成器
前端·javascript
kyriewen4 小时前
别再这样写 async/await 了:我在 Code Review 中见过最多的 8 个错误
前端·javascript·面试
用户298698530148 小时前
在 React 中使用 JavaScript 将 Excel 转换为 SVG
前端·javascript·react.js
labixiong9 小时前
手写Promise--微任务、静态方法、async/await 全搞懂(三)
前端·javascript
铁皮饭盒10 小时前
3行代码搞定页面截图,Bun.WebView真的简单
javascript