React----JSX

JSX

  • 一、JSX 的基本使用
    • 1、使用步骤
    • 2、为什么脚手架中可以使用 JSX 语法?
  • 二、JSX 中使用 JavaScript 表达式
  • 三、JSX 的条件渲染
  • 四、JSX 的列表渲染
  • 五、JSX 的样式处理
    • 1、行内样式 —— style
    • 2、类名 —— className

一、JSX 的基本使用

React 使用 JSX 来替代常规的 JavaScript。JSX 是一个看起来很像 XML 的 JavaScript 语法扩展。
不需要一定使用 JSX,但它有以下优点:

  • JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化。
  • 它是类型安全的,在编译过程中就能发现错误。
  • 使用 JSX 编写模板更加简单快速。

1、使用步骤

(1)使用 JSX 语法创建 react 元素

// 使用 JSX 语法,创建 react 元素:
const title = <h1>Hello JSX</h1>

(2)使用 ReactDOM.render() 方法渲染 react 元素到页面中

// 渲染创建好的React元素
ReactDOM.render(title, root)

如下所示:

在这里插入图片描述

2、为什么脚手架中可以使用 JSX 语法?

1.JSX 不是标准的 ECMAScript 语法,它是 ECMAScript 的语法扩展。
2. 需要使用 babel 编译处理后,才能在浏览器环境中使用。
3. create-react-app 脚手架中已经默认有该配置,无需手动配置。
4. 编译 JSX 语法的包为:@babel/preset-react

二、JSX 中使用 JavaScript 表达式

可以在 JSX 中使用 JavaScript 表达式。表达式写在花括号 {} 中。实例如下

const name = '王欢'
const dv = (
<div>你好,我叫:{name}</div>
)

如下所示:

const name = '王欢'
const dv = (
<div>你好,我叫:{name}</div>
)
ReactDOM.render(dv,document.getElementById('root');

打印结果为:
在这里插入图片描述
需要注意的是:

  • 单大括号中可以使用任意的 JavaScript 表达式
  • JSX 自身也是 JS 表达式
  • JS 中的对象是一个例外,一般只会出现在 style 属性中
  • 不能在{}中出现语句(比如:if/for 等)

三、JSX 的条件渲染

场景:loading效果
条件渲染:根据条件渲染特定的 JSX 结构
可以使用if/else或三元运算符或逻辑与运算符来实现。
如下所示:

const loadData = ()=>{if(isloading){return <div>loading...</div>}else{return <div>数据加载完成,此处显示加载后的数据</div>}
}
const title = (<h1>条件渲染:{loadData()}</h1>
)
ReactDOM.render(title,document.getElementById('root'))

当我们设置isloadingtrue时,则有:
在这里插入图片描述
当我们设置isloadingfalse时,有:
在这里插入图片描述

四、JSX 的列表渲染

如果要渲染一组数据,应该使用数组的 map() 方法;渲染列表时应该添加 key 属性,key 属性的值要保证唯一。

原则:map() 遍历谁,就给谁添加 key 属性
注意:尽量避免使用索引号作为 key。
如下:

const songs = [
{id: 1, name: '小欢'},
{id: 2, name: '小冉'},
{id: 3, name: '小刘'},
{id: 4, name: '小熊'}
]
const list = (
<ul>{songs.map(item => <li key={item.id}>{item.name}</li>)}
</ul> )
ReactDOM.render(list,document.getElementById('root'))

打印结果为:
在这里插入图片描述

五、JSX 的样式处理

1、行内样式 —— style

代码格式如下:

<h1 style={{ color: 'red', backgroundColor: 'skyblue' }}>JSX的样式处理
</h1>

如下:
在这里插入图片描述

2、类名 —— className

代码格式为:

<h1 className="title">JSX的样式处理
</h1>

如下:
在index.css文件中添加:

.title{text-align:center
}

运行结果为:
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部