三、大括号语法

1. 放在标签之间(渲染内容)

用于在页面上展示动态的文本或嵌套的组件。

用法 示例 说明
放变量 <h1>{userName}</h1> 直接渲染变量值
放表达式 <p>{100 + 50}</p> 先计算表达式,再渲染结果
放函数调用 <span>{getFullName()}</span> 渲染函数的返回值
放条件判断 <div>{isLoggedIn ? '欢迎' : '请登录'}</div> 使用三元运算符或 &&
放数组(列表渲染) <ul>{list.map(item => <li>{item.name}</li>)}</ul> 遍历数组生成列表

2. 放在标签属性中(动态传值)

用于动态给组件或 HTML 标签传递属性(除了字符串字面量,其他都必须用大括号)。

  • 动态绑定变量 :<img src={userAvatar} />
  • 动态绑定布尔值 :<button disabled={isSubmitting}>提交</button>
  • 动态绑定事件 :<button onClick={handleClick}>点击</button>
  • 动态绑定对象(内联样式) :<div style={``{ color: 'red' }}>文本</div>(注意这里是双大括号)
  • 传递子组件 :<Layout header={<Header />} />

3. 作为对象字面量的一部分

当属性需要接收一个对象时,外层 {} 表示这是 JS 代码,内层 {} 表示这是一个 JS 对象。

  • 内联样式 :<div style={``{ fontSize: '16px', marginTop: '10px' }} />
  • 传递复杂配置 :<Chart data={``{ labels: ['A', 'B'], values: [1, 2] }} />

二、使用误区

大括号里只能放能「算出一个结果」的表达式,不能放用来控制流程的语句。

  • ❌ 不能放 if...else:{if (a > b) return '大'}(错误!)
  • ❌ 不能放 for / while 循环:{for(let i=0; i<10; i++) {}}(错误!)
  • ❌ 不能放变量声明 var / let / const:{const a = 1}(错误!)
相关推荐
星栈26 分钟前
视频即代码,Remotion 能做什么、不能做什么
前端·音视频开发
广州华水科技28 分钟前
单北斗GNSS位移监测系统的应用与技术解析
前端
用户47949283569151 小时前
从一句话或代码仓到可交互 HTML:开源 Agent 画图技能 Archify v3.2 实测与选型边界
前端·后端·面试
风骏时光牛马3 小时前
生成一个AI多模态标题,仅输出一条标题,无额外文字、问句、备选、配图、文案等任何附加内容,不需要其他的任务服务 只要标题。
前端
wangruofeng4 小时前
从 GIF 到 AVIF:网页图片格式演进与 2026 年选型指南
前端·架构
清晨Coding5 小时前
为什么用 React Developer Tools 查看组件树这么乱?
前端·react.js
鶴哥只手遮天5 小时前
《Electron 45.2.3 内核解剖》第 4 章 补丁体系:380 个补丁改了什么
前端·electron
FungLeo7 小时前
成为全栈·Vue 管理后台篇·分类树与标签管理:层级数据如何落到管理界面
前端·javascript·vue.js·分类树·naive ui·标签管理·前端数据结构
Lank_M10 小时前
白底都占八成,PNG 为何只在图表页赢过 JPG
前端
张一凡9311 小时前
给 Coding Agent 加一道"架构闸门":Jin 是如何做到"先审架构、再写代码、不漂移"的
前端·后端·agent