美文网首页
第十四篇 描述UI-JSX中使用花括号包含JavaScript代

第十四篇 描述UI-JSX中使用花括号包含JavaScript代

作者: 深圳都这么冷 | 来源:发表于2023-02-07 00:00 被阅读0次

JSX中使用花括号包含JavaScript代码

JSX 允许您在 JavaScript 文件中编写类似 HTML 的标记,将呈现逻辑和内容保持在同一位置。 有时您会希望在该标记内添加一些 JavaScript 逻辑或引用动态属性。 在这种情况下,您可以在 JSX 中使用大括号为 JavaScript 打开一个窗口。

你将学习

  • 如何传递带引号的字符串
  • 如何使用大括号在 JSX 中引用 JavaScript 变量
  • 如何使用大括号在 JSX 中调用 JavaScript 函数
  • 如何在带有花括号的 JSX 中使用 JavaScript 对象

传递带引号的字符串

当你想将一个字符串属性传递给 JSX 时,你可以将它放在单引号或双引号中:

export default function Avatar() {
  return (
    <img
      className="avatar"
      src="https://i.imgur.com/7vQD0fPs.jpg"
      alt="Gregorio Y. Zara"
    />
  );
}

在这里,“https://i.imgur.com/7vQD0fPs.jpg”和“Gregorio Y. Zara”作为字符串传递。

但是,如果您想动态指定 src 或 alt 文本怎么办? 您可以通过将“和”替换为 { 和 } 来使用来自 JavaScript 的值:

export default function Avatar() {
  const avatar = 'https://i.imgur.com/7vQD0fPs.jpg';
  const description = 'Gregorio Y. Zara';
  return (
    <img
      className="avatar"
      src={avatar}
      alt={description}
    />
  );
}

请注意 className="avatar" 和 src={avatar} 之间的区别,前者指定使图像变圆的“avatar”CSS 类名,后者读取名为 avatar 的 JavaScript 变量的值。 那是因为花括号让您可以在标记中直接使用 JavaScript!

使用花括号:进入 JavaScript 世界的窗口

JSX 是一种特殊的 JavaScript 编写方式。 这意味着可以在其中使用 JavaScript——使用花括号 {}。 下面的例子首先为科学家声明了一个名字,name,然后用大括号将它嵌入到 <h1> 中:

export default function TodoList() {
  const name = 'Gregorio Y. Zara';
  return (
    <h1>{name}'s To Do List</h1>
  );
}

尝试将名称的值从“Gregorio Y. Zara”更改为“Hedy Lamarr”。 查看待办事项列表标题如何变化?

任何 JavaScript 表达式都可以在大括号之间工作,包括像 formatDate() 这样的函数调用:

const today = new Date();

function formatDate(date) {
  return new Intl.DateTimeFormat(
    'en-US',
    { weekday: 'long' }
  ).format(date);
}

export default function TodoList() {
  return (
    <h1>To Do List for {formatDate(today)}</h1>
  );
}

在哪里使用花括号

你只能在 JSX 中以两种方式使用大括号:

    1. 作为直接在 JSX 标签内的文本:<h1>{name}'s To Do List</h1> 有效,但 <{tag}>Gregorio Y. Zara's To Do List</{tag}> 无效。
    1. 作为紧跟在 = 符号之后的属性:src={avatar} 将读取 avatar 变量,但 src="{avatar}" 将传递字符串“{avatar}”。

使用“双重花括号”:CSS 和 JSX 中的其他对象

除了字符串、数字和其他 JavaScript 表达式之外,您甚至可以在 JSX 中传递对象。 对象也用大括号表示,例如 { name: "Hedy Lamarr", inventions: 5 }。 因此,要在 JSX 中传递一个 JS 对象,必须将对象包裹在另一对花括号中:person={{ name: "Hedy Lamarr", inventions: 5 }}。

您可能会在 JSX 中的内联 CSS 样式中看到这一点。 React 不要求您使用内联样式(CSS 类在大多数情况下工作得很好)。 但是当你需要一个内联样式时,你将一个对象传递给 style 属性:

export default function TodoList() {
  return (
    <ul style={{
      backgroundColor: 'black',
      color: 'pink'
    }}>
      <li>Improve the videophone</li>
      <li>Prepare aeronautics lectures</li>
      <li>Work on the alcohol-fuelled engine</li>
    </ul>
  );
}

尝试更改 backgroundColor 和颜色的值。

当你这样写时,你真的可以看到大括号内的 JavaScript 对象:

<ul style={
  {
    backgroundColor: 'black',
    color: 'pink'
  }
}>

下次你在 JSX 中看到 {{ 和 }} 时,要知道它只不过是 JSX 卷曲内的一个对象!

"陷阱

内联样式属性以驼峰式命名。 例如,HTML <ul style="background-color: black"> 在您的组件中将写为 <ul style={{ backgroundColor: 'black' }}>。

使用 JavaScript 对象和花括号的更多乐趣

您可以将多个表达式移动到一个对象中,并在您的 JSX 大括号内引用它们:

const person = {
  name: 'Gregorio Y. Zara',
  theme: {
    backgroundColor: 'black',
    color: 'pink'
  }
};

export default function TodoList() {
  return (
    <div style={person.theme}>
      <h1>{person.name}'s Todos</h1>
      <img
        className="avatar"
        src="https://i.imgur.com/7vQD0fPs.jpg"
        alt="Gregorio Y. Zara"
      />
      <ul>
        <li>Improve the videophone</li>
        <li>Prepare aeronautics lectures</li>
        <li>Work on the alcohol-fuelled engine</li>
      </ul>
    </div>
  );
}

在此示例中,person JavaScript 对象包含一个name字符串和一个theme对象:

const person = {
  name: 'Gregorio Y. Zara',
  theme: {
    backgroundColor: 'black',
    color: 'pink'
  }
};

组件可以像这样使用来自 person 的这些值:

<div style={person.theme}>
  <h1>{person.name}'s Todos</h1>

JSX 作为一种模板语言非常精简,因为它允许您使用 JavaScript 组织数据和逻辑。

回顾

现在你几乎了解了 JSX 的一切:

  • 引号内的 JSX 属性作为字符串传递。
  • 大括号让您可以将 JavaScript 逻辑和变量带入您的标记中。
  • 它们在 JSX 标签内容内部或紧跟在属性中的 = 之后工作。
  • {{ 和 }} 不是特殊语法:它是一个包含在 JSX 大括号内的 JavaScript 对象。

相关文章

  • JavaScript编码风格指南:三、语句和表达式

    在JavaScript中,诸如 if 和 for 之类的语句有两种写法,使用花括号包裹的多行代码和不使用花括号的单...

  • Python-4.数据结构

    本章包含内容: 列表:列表中的元素使用方括号包含 字典(键值对):花括号,且带有key:value对应关系 元组:...

  • 判断括号匹配问题

    问题描述 给定一个字符串,其中的字符包含任意字符包括三种括号:花括号{ }、中括号[ ]、圆括号( )。设计算法,...

  • JavaScript 函数

    JavaScript 函数语法函数就是包裹在花括号中的代码块,前面使用了关键词 function:function...

  • Go语言学习笔记(五)

    这是Go语言学习笔记的第五篇 条件语句 条件语句格式: 几点注意的地方: 不需要使用括号()将条件包含起来 花括号...

  • json_encode( )和json_decode( )

    介绍【JSON】数组:JSON 语法是 JavaScript 语法的子集。JSON 数组在中括号中书写:数组可包含...

  • 6 JS函数语法

    10 JavaScript 函数语法函数就是包裹在花括号中的代码块,前面使用了关键词 function: 当调用该...

  • JS--函数

    JavaScript 函数语法 函数就是包裹在花括号中的代码块,前面使用了关键词 function: 当调用该函数...

  • 《编写可维护的JavaScript》读书笔记之编程风格-语句与表

    语句与表达式 在 JavaScript 中,诸如 if 和 for 之类的语句有两种写法,使用花括号包裹的多行代码...

  • JSX中ES6备忘

    简介 JSX是超文本标记语言的扩展,允许HTML与JavaScript的共存。 ES6中的括号 {}花括号中的内容...

网友评论

      本文标题:第十四篇 描述UI-JSX中使用花括号包含JavaScript代

      本文链接:https://www.haomeiwen.com/subject/cghtkdtx.html