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不可或缺的一部分。

相关推荐
猫32814 小时前
v-cloak
前端·javascript·vue.js
AC赳赳老秦14 小时前
OpenClaw二次开发实战:编写专属办公自动化技能,适配个性化需求
linux·javascript·人工智能·python·django·测试用例·openclaw
旷世奇才李先生14 小时前
Vue 3\+Vite\+Pinia实战:企业级前端项目架构设计
前端·javascript·vue.js
Ulyanov15 小时前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
聚美智数16 小时前
企业实际控制人查询-公司实控人查询
android·java·javascript
herinspace18 小时前
管家婆实用贴-如何分离和附加数据库
开发语言·前端·javascript·数据库·语音识别
这里不能睡觉19 小时前
js 实现 Blob、File、ArrayBuffer、base64、URL 之间互转
javascript
拉拉肥_King19 小时前
Ant Design Table 横向滚动条神秘消失?我是如何一步步找到真凶的
前端·javascript
吴声子夜歌20 小时前
Vue3——新语法
前端·javascript·vue.js
jiayong2320 小时前
第 36 课:任务详情抽屉快捷改状态
开发语言·前端·javascript·vue.js·学习