React基础 第五章(JSX大括号的妙用)

在React的JSX中,大括号不仅是一个简单的符号,它是连接JavaScript世界和JSX的桥梁。本文将基于React官方文档中的知识点,探讨如何在JSX中通过大括号有效地使用JavaScript,并提供实用技巧、示例代码以及注意事项。

使用引号传递字符串

在JSX中,你可以使用引号来传递字符串值给属性。

技巧

  • 对于静态的字符串值,直接使用引号传递。

示例

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

注意事项

  • 当传递静态字符串时,确保使用引号而不是大括号。

在JSX的大括号内引用JavaScript变量

当你需要动态指定属性值时,可以使用大括号来引用JavaScript变量。

技巧

  • 使用大括号{}来引用变量,使得代码更加灵活和可维护。

示例

jsx 复制代码
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} // <- 变量
    />
  );
}

注意事项

  • 不要将大括号与引号混用,这会导致错误的字符串字面量传递。

在JSX的大括号内调用JavaScript函数

你可以在JSX的大括号内调用JavaScript函数,以动态生成内容。

技巧

  • 利用函数调用来处理复杂的逻辑,然后将结果嵌入到JSX中。

示例

jsx 复制代码
const today = new Date();
function formatDate(date) {
  return new Intl.DateTimeFormat('zh-CN', { weekday: 'long' }).format(date);
}

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

注意事项

  • 确保函数返回的是一个有效的React节点或值。

使用双大括号:JSX中的CSS和对象

在JSX中,你可以使用双大括号{{}}来传递对象,这在内联样式中尤其常见。

技巧

  • 使用双大括号来传递样式对象,使得样式声明更加直观。

示例

jsx 复制代码
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>
  );
}

注意事项

  • 使用内联样式时,属性名应该采用驼峰命名法。

总结

通过使用大括号,我们可以在JSX中灵活地引入JavaScript逻辑和变量。记住以下要点:

  • 引号用于传递静态字符串。
  • 大括号用于嵌入JavaScript表达式。
  • 双大括号用于传递对象,尤其是内联样式。

不过,要注意不要滥用大括号,保持代码的清晰和可读性。

相关推荐
知识分享小能手3 小时前
Vue3 学习教程,从入门到精通,Axios 在 Vue 3 中的使用指南(37)
前端·javascript·vue.js·学习·typescript·vue·vue3
伍哥的传说4 小时前
Mitt 事件发射器完全指南:200字节的轻量级解决方案
vue.js·react.js·vue3·mitt·组件通信·事件管理·事件发射器
程序员码歌6 小时前
【零代码AI编程实战】AI灯塔导航-总结篇
android·前端·后端
用户21411832636026 小时前
免费玩转 AI 编程!Claude Code Router + Qwen3-Code 实战教程
前端
小小愿望8 小时前
前端无法获取响应头(如 Content-Disposition)的原因与解决方案
前端·后端
小小愿望8 小时前
项目启功需要添加SKIP_PREFLIGHT_CHECK=true该怎么办?
前端
烛阴8 小时前
精简之道:TypeScript 参数属性 (Parameter Properties) 详解
前端·javascript·typescript
海上彼尚9 小时前
使用 npm-run-all2 简化你的 npm 脚本工作流
前端·npm·node.js
开发者小天9 小时前
为什么 /deep/ 现在不推荐使用?
前端·javascript·node.js
如白驹过隙10 小时前
cloudflare缓存配置
前端·缓存