【React入门学习】-3.JSX的学习与使用

134 阅读2分钟

参考链接: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,线上地址请查看上一篇文章)。

image.png

一.在body内部输入下面的代码(一定要加type='text/babel')

<script type='text/babel'></script>

image.png

二.在 JSX 中嵌入表达式

声明了一个名为 name 的变量,然后在 JSX 中使用它,并将它包裹在大括号中

const name = 'Alam Chan';
const element = <h1>Hello, {name}</h1>;
ReactDOM.render(
    element,
    document.getElementById('root')
);

image.png

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')
);

image.png

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')
        );

image.png

JSX 特定属性

通过使用引号,来将属性值指定为字符串字面量:

const element = <div tabIndex="0"></div>;

image.png

image.png

使用大括号,来在属性值中插入一个 JavaScript 表达式:

image.png

  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')
        );

image.png

image.png

JSX 标签里能够包含多个子元素:

image.png

const element5 = (
     <div>
         <h1>Hello!</h1>
         <h2>Good to see you here.</h2>
     </div>
);
ReactDOM.render(
     element5,
     document.getElementById('root6')
);

image.png

JSX 防止注入攻击

image.png

// JSX 防止注入攻击
// 可以安全地在 JSX 当中插入用户输入内容:
 const response={
     potentiallyMaliciousInput:'1'
 }
 const title = response.potentiallyMaliciousInput;
    // 直接使用是安全的:
 const element6 = <h1>{title}</h1>;
 ReactDOM.render(
     element6,
     document.getElementById('root7')
 );

image.png