1. JSX 简介
-
什么是 JSX?——是 JavaScript 语法扩 展,可以让你在 JavaScript 文件中书写类似 HTML 的标签。
-
JSX 与 HTML 的区别?——jsx浏览器无法识别,html浏览器可以直接识别。
-
JSX 与 React 的关系?——react通过jsx生成虚拟dom。
-
为什么使用 JSX?——实现把 UI 的逻辑和结构都放在一个叫“组件”的东西里。
【解释】过去js(即UI逻辑)和html(即UI结构)是分开写的。
2. JSX 基础语法
2.1 JSX 表达式
-
在 JSX 中嵌入 JavaScript 表达式,使用
{}
包裹表达式
2.2 JSX 注释
//单行注释
/*
多行注释
*/
const JSX = (
<div>
<h1>This is a block of JSX</h1>
<p>Here's a subtitle</p>
{/* this is my commit */}
</div>
);
2.3 JSX 中的字符串
//字符串直接量
<img
className='avatar'
src="https://i.imgur.com/7vQD0fPs.jpg"
alt="Gregorio Y. Zara"
/>
//字符串插值
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}
/>
);
}
2.4 JSX 中的布尔值、null
和 undefined
- 渲染控制
3. JSX 元素与组件
3.1 JSX 元素
//创建 JSX 元素
const JSX = <h1>Hello JSX!</h1>;
//JSX 元素的嵌套
const JSX=(
<div>
<h1>this is h1 tag</h1>
<p>this is p tag</p>
<ul>
<li>this is li</li>
<li>this is li</li>
<li>this is li</li>
</ul>
</div>
)
- JSX 是 JavaScript 的语法扩展
- 可以直接在 JavaScript 中编写 HTML
- JSX必须返回单个元素。
- 父元素将包裹所有其他级别的嵌套元素
- 渲染多个元素时,可以把它们都用圆括号括起来
3.2 JSX 组件
-
函数组件
const MyComponent ()=>{
return (
<div>
<h1>Hello React!</h1>
</div>
)
} -
类组件
class MyComponent extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<h1>Hello React!</h1>
</div>
)
}
};- 用 ES6 的
class
语法创建React组件- 使用
super()
调用父类的构造函数,即本例中的React.Component
- 组件初始化
- 在组件的
constructor
里调用super
,并将props
传递给它们
- 在组件的
- 使用
- 用 ES6 的
3.3 组件命名规则
- 首字母大写
- 函数必须有返回值
3.4 组件嵌套与组合
const ChildComponent = () => {
return (
<div>
<p>I am the child</p>
</div>
);
};
class ParentComponent extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<h1>I am the parent</h1>
{ /* 修改这行下面的代码 */ }
<ChildComponent/>
{ /* 修改这行上面的代码 */ }
</div>
);
}
};
- 在react父组件中引用一个子组件
- 子组件引用要确保标签闭合
4. JSX 属性
4.1 HTML 属性与 JSX 属性的区别
class
vsclassName
for
vshtmlFor