【React】为何选择使用JSX呢?

 

由于逐渐发现在业务中有些部分没有完全理解,所以开始仔细阅读相关文档。

你好,世界。

以下是React的最短示例:将标题“你好,世界!”显示在页面上。

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<h1>Hello, world!</h1>);
<div id="root">
    <!-- This element's contents will be replaced with your component. -->
</div>

引入JSX

const element = <h1>Hello, world!</h1>;
    • JSXはJavaScriptの構文の拡張。

 

    JSXはReact要素を生成する。

使用JSX的原因。

React接受了這個事實,即用於表現的邏輯與UI邏輯本質上是相互結合的,這些邏輯包括對事件的響應、隨時間變化的狀態以及為界面準備數據。

React不是通过将标记和逻辑分别写入不同的文件来人为地分离技术,而是通过使用包含标记和逻辑的松散耦合的“组件”单元来实现关注点分离。

在JSX中嵌入表达式

    • あらゆる有効なJavaScriptの式を、JSX内で中括弧に囲んで使用できる。

2+2、user.firstName、formatName(user)など全て有効なJavaScriptの式。

在下面的例子中,将formatName(user)函数的结果嵌入到

元素中。

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};

const element = (
  <h1>
    Hello, {formatName(user)}!
  </h1>
);

JSX同样也是一种表达式。

    • コンパイルの後、JSXの式は普通のJavaScriptの関数呼び出しに変換され。JavaScriptオブジェクトへと評価される。

 

    • そのため以下のようなことが可能。

JSXをif文やforループの使用
JSXを変数に代入
JSXを引数として受け取る
JSXを関数から返す

使用JSX来指定子元素。

    タグが空の場合、XMLのように /> タグを閉じることができる
const element = <img src={user.avatarUrl} />;
    JSXのタグは子要素を持つことができる
const element = (
  <div>
    <h1>Hello!</h1>
    <h2>Good to see you here.</h2>
  </div>
);

JSX用于防止注入攻击。

JSX具有默认机制来防止特定类型的注入攻击,特别是跨站脚本(XSS)攻击。

注入攻击是一种通过将恶意代码或数据注入到应用程序的输入中,从而导致非法行为的攻击方法。特别是跨站脚本攻击(XSS),是一种在Web应用程序中非常常见的攻击技术,攻击者可以通过嵌入恶意脚本到网页中,窃取其他用户的数据或者引导用户进行非法操作。
    デフォルトでは、React DOMはJSXに埋め込まれた値をレンダー前にエスケープするため、悪意のあるスクリプトが実行されるリスクを低減する。

JSX是对象的表达形式。

Babel 将 JSX 编译为 React.createElement() 的调用。

以下这两个例子是等价的

const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);
const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

React.createElement()本质上创建了以下类型的对象。 这些对象被称为React元素,可以将其视为描述要在屏幕上显示的内容的说明书。

React会解析这些对象并构建并维护更新的DOM。

继续

广告
将在 10 秒后关闭
bannerAds