参考链接:react.docschina.org/docs/introd…
JSX,是一个 JavaScript 的语法扩展。我们建议在 React 中配合使用 JSX,JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式。JSX 可能会使人联想到模版语言,但它具有 JavaScript 的全部功能。
为什么使用 JSX?
React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合,比如,在 UI 中需要绑定处理事件、在某些时刻状态发生变化时需要通知到 UI,以及需要在 UI 中展示准备好的数据。
React 并没有采用将标记与逻辑进行分离到不同文件这种人为地分离方式,而是通过将二者共同存放在称之为“组件”的松散耦合单元之中,来实现关注点分离。我们将在后面章节中深入学习组件。如果你还没有适应在 JS 中使用标记语言,这个会议讨论应该可以说服你。
React 不强制要求使用 JSX,但是大多数人发现,在 JavaScript 代码中将 JSX 和 UI 放在一起时,会在视觉上有辅助作用。它还可以使 React 显示更多有用的错误和警告消息。
前期准备:
1.创建3.JSX_.shtml文件,引入JS文件 (本文使用的是下载到本地的js,线上地址请查看上一篇文章)。
一.在body内部输入下面的代码(一定要加type='text/babel')
<script type='text/babel'></script>
二.在 JSX 中嵌入表达式
声明了一个名为 name 的变量,然后在 JSX 中使用它,并将它包裹在大括号中
const name = 'Alam Chan';
const element = <h1>Hello, {name}</h1>;
ReactDOM.render(
element,
document.getElementById('root')
);
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Harper',
lastName: 'Perez'
};
const element = (
<h1>
Hello, {formatName(user)}! </h1>
);
ReactDOM.render(
element,
document.getElementById('root')
);
JSX表达式
// JSX 表达式
function getGreeting(user) {
if (user) {
return <h1>Hello, {formatName(user)}!</h1>;
}
return <h1>Hello,Alam Chan.</h1>;
}
ReactDOM.render(
getGreeting(),
document.getElementById('root3')
);
JSX 特定属性
通过使用引号,来将属性值指定为字符串字面量:
const element = <div tabIndex="0"></div>;
使用大括号,来在属性值中插入一个 JavaScript 表达式:
const user2 = {avatarUrl:"https://react.docschina.org/favicon-32x32.png?v=f4d46f030265b4c48a05c999b8d93791"}
const element4 = <img src={user2.avatarUrl}></img>;
ReactDOM.render(
element4,
document.getElementById('root5')
);
JSX 标签里能够包含多个子元素:
const element5 = (
<div>
<h1>Hello!</h1>
<h2>Good to see you here.</h2>
</div>
);
ReactDOM.render(
element5,
document.getElementById('root6')
);
JSX 防止注入攻击
// JSX 防止注入攻击
// 可以安全地在 JSX 当中插入用户输入内容:
const response={
potentiallyMaliciousInput:'1'
}
const title = response.potentiallyMaliciousInput;
// 直接使用是安全的:
const element6 = <h1>{title}</h1>;
ReactDOM.render(
element6,
document.getElementById('root7')
);