JSX语法糖

语法糖:语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。

JSX语法糖

JSX语法,像是在Javascript代码里直接写XML的语法,实质上这只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码,React 官方推荐使用JSX, 当然你想直接使用纯Javascript代码写也是可以的,只是使用JSX,组件的结构和组件之间的关系看上去更加清晰。

JSX语法简介

React的核心机制之一就是可以在内存中创建虚拟的DOM元素。React利用虚拟DOM来减少对实际DOM的操作从而提升性能。

一. 三元表达式

var person = <Person name={window.isLoggedIn ? window.name : ''} />;
上述代码经过JSX编译后会得到:

var person = React.createElement(
  Person,
  {name: window.isLoggedIn ? window.name : ''}
);

二. 数组递归

数组循环,数组的每个元素都返回一个React组件。

var lis = this.todoList.todos.map(function (todo) {
  return  (
    <li>
      <input type="checkbox" checked={todo.done}>
      <span className={'done-' + todo.done}>{todo.text}</span>
    </li>
  );
});

var ul = (
  <ul className="unstyled">
    {lis}
  </ul>
);

三. 使用样式

<div style={{color: '#ff0000', fontSize: '14px'}}>Hello World.</div>
或者
var style = {
  color: '#ff0000',
  fontSize: '14px'
};

var node = <div style={style}>HelloWorld.</div>;

四.绑定事件

JSX让事件直接绑定在元素上。

<button onClick={this.checkAndSubmit.bind(this)}>Submit</button>
和原生HTML定义事件的唯一区别就是JSX采用驼峰写法来描述事件名称,大括号中仍然是标准的JavaScript表达式,返回一个事件处理函数。

React并不会真正的绑定事件到每一个具体的元素上,而是采用事件代理的模式:在根节点document上为每种事件添加唯一的Listener,然后通过事件的target找到真实的触发元素。这样从触发元素到顶层节点之间的所有节点如果有绑定这个事件,React都会触发对应的事件处理函数。这就是所谓的React模拟事件系统。尽管整个事件系统由React管理,但是其API和使用方法与原生事件一致。

JSX注意事项

1.开发依赖
jsx语法依赖react.js和jsx的解析器。所以在它之前必须还引入这两种基础文件。
react.js 、react-dom.js 和 browser.min.js ,它们必须首先加载。
2.script标签声明
script 标签的 type 属性为 text/babel,这是React 独有的 JSX 语法,跟 JavaScript 不兼容。凡是在页面中直接使用 JSX 的地方,都要加上 type=”text/babel”。

### 三级标题:JSX 语法的基本概念与用途 JSX 是 JavaScript XML 的简写,表示在 JavaScript 代码中写 XML(HTML)格式的内容。它是一种 JavaScript 的语法扩展,允许开发者在 JavaScript 中直接编写类似 HTML 的结构,从而更直观地描述用户界面的组成。JSX 最初是为 React 框架设计的,但也可以在其他项目中使用[^1]。 JSX 的主要作用是简化用户界面的构建过程。通过 JSX,开发者可以直接在 JavaScript 中嵌入类似 HTML 的结构,从而提高代码的可读性和开发效率。与传统的字符串拼接或 DOM 操作相比,JSX 提供了一种声明式的语法,使 UI 的构建更加直观和简洁[^3]。 JSX 并不是必需的,React 在不使用 JSX 的情况下依然可以正常工作。然而,JSXReact 提供了良好的语法糖,使组件结构更清晰、更易维护。例如,以下是一个使用 JSX 的简单 React 组件示例: ```jsx function Welcome(props) { return <h1>Hello, {props.name}</h1>; } ``` 上述代码中,`<h1>Hello, {props.name}</h1>` 是 JSX 语法,它会被 Babel 等工具转换为标准的 JavaScript 函数调用,从而在浏览器中运行[^2]。 JSX 的语法与 HTML 非常相似,但有一些关键区别。例如,JSX 允许使用 JavaScript 表达式,这些表达式可以嵌入在大括号 `{}` 中,从而实现动态内容的渲染。此外,JSX 的标签必须闭合,且只能有一个顶层元素[^4]。 ### 三级标题:JSX 的优势 JSX 的优势在于其声明式的语法和良好的可读性。与传统的 JavaScript DOM 操作相比,JSX 让 UI 的构建更加直观,降低了学习成本,提升了开发效率。它不仅简化了 UI 的构建过程,还使得代码更容易理解和调试,避免了复杂的 JavaScript DOM 结构[^4]。 例如,以下代码展示了如何使用 JSX 渲染一个简单的按钮组件: ```jsx const button = <button onClick={() => alert('Clicked!')}>Click Me</button>; ``` 该代码中的 JSX 结构清晰地表达了按钮的外观和行为,使得开发者可以更专注于 UI 的逻辑实现[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值