JSX
1.JSX嵌入表达式
目标:掌握JSX中使用嵌入表达式
JSX是React中用来构建用户界面的手段,所以在JSX中嵌入表达式就是要将表达式所产生的值渲染到用户的界面中.
表达式就是一个能够产生结果的式子,就是说代码执行后一定会产生一个值作为结果。
10
'a'
3 + 4
10 > 100
const a = 10
"abc".split('')
['a','b','c'].join('_')
function fn() {}
- 在
JSX中使用一对花括号{}嵌入表达式产生的值
//插入文本内容
const name = "张三";
//在react中是使用{}代表插值而不是跟vue一样双花括号{{}}
const jsx = <div>Hello,{name}</div>
- 使用
属性进行插入(记得在react中都是使用className代替class)
const activeName = "active";
const jsx = <input type="text" className={activeName} />
- 执行
计算
const x = 10;
const y = 20;
const paragraph = <p>{x * y}</p>
- 渲染
函数返回值
function getValue() {
return "some value from getValue function"
}
const text = <p>{getValue()}</p>
- JSX
表达式
const isError = true;
const jsx = isError ? <div>发生了未知错误</div> : null
- 插入对象
const other = <div style={{width:200,height:200,backgroundColor:"black"}}></div>
[⚠️] 请记住多单词需要使用小驼峰命名法,而且{{}} 代表的是插值表达式包裹对象{{}}
JSX中使用注释
const element = (
<>
{/* 头部 */}
<header>头部</header>
{/* 身体 */}
<body>身体</body>
{/* 底部 */}
<footer>底部</footer>
</>
)
- 非表达式是不能被嵌入
JSX
//错误🙅•♂️示范
const jsx = <div>{ if(){} }</div>
[Attention] 就是在JSX中,这些什么true | false | null 是不会被渲染成具体内容展示的
2.JSX条件渲染
目标:掌握在JSX中使用分支语句,三元运算,逻辑运算进行条件渲染(根据条件决定渲染什么内容)
- 使用
if分支语句进行条件渲染
//数据是否正在加载的标识
const isLoading = false
//获取数据
function getContent() {
if(isLoading) {
return <span>数据加载中...</span>
}else {
return <span>我是数据</span>
}
}
//jsx不能使用if语句,但是js中可以。
const jsx = <div>{getContent()}</div>
- 使用三元运算符进行条件渲染
//数据是否加载
const isLoading = false;
//根据条件决定渲染什么内容
const jsx = isLoading ? <span>数据加载中...</span> : <span>我是数据</span>
- 使用逻辑与运算符进行条件渲染
//review一下逻辑与运算符
// 在逻辑与表达式中只要有一个运算式返回假, 整个表达式返回假, 所有的运算式都返回真, 整个表达式返回真
true && false // false
true && true // true
false && false // false
false && true // false
// 逻辑运算符常见误区: 只要是逻辑表达式一定返回布尔值, 这是错误的
// 在逻辑与表达式中如果有运算式的返回结果转换为布尔值为假, 表达式的返回值就为该运算式的返回值
'' && 1 // ''
'a' && 0 // 0
// 在逻辑与表达式中如果所有运算式的返回结果转换为布尔值都为假, 表达式的返回值为第一个运算式的返回值
'' && 0 // ''
// 在逻辑与表达式中如果所有运算式的返回结果转换为布尔值都为真, 表达式的返回值为最后一个运算式的返回值
'a' && 1 // 1
//数据是否正在加载的标识
const isLoading = false;
//如果 isLoading为false,短路
const jsx = isLoading && <span>数据加载中</span>
3.总结
-
如果想要在JSX输出对象,需要将对象转换成字符串,使用JSON.stringify方法{JSON.stringfiy({name:"张三"})}
-
表达式就是能够产生一个结果的式子,就是代码执行后产生一个值为结果
-
使用插值语法
{}代表嵌入式表达式 -
在应用构建时,
JSX会被编译成为React.createElement方法的调用或_jsx方法的调用,这两个方法执行后都会产生值,都返回虚拟DOM对象,使用jsx本身也是表达式,JSX就可以赋值给变量,可以作为函数的参数可以作为函数的返回值 -
在
JSX中,布尔值,null,undefined渲染结果都为空,所以渲染结果就是什么都没有 -
JSX中有四种渲染表达方式if条件判断- 三元运算符
- 逻辑与运算符
switch case