react学习----jsx语法

jsx语法

jsx优点:js逻辑和html标签,是一个 JavaScript 的语法扩展,具有JavaScript全部功能;
React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合

  1. const element =

    Hello, world!

    ;
    // js与html相结合;
  2. const name = 'Josh Perez';// 定义name变量;
    const element =

    Hello, {name}

    ;
    // 在标签中用大括号可以使用变量;

1.在大括号中可以使用js表达式
2.在必须使用ReactDOM.render();函数才可以渲染使用
3.为方便阅读可将jsx拆分为多行

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const element = (
  <h1>
    Hello, {formatName(user)}!
  h1>
);

const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};

ReactDOM.render(
  element,
  document.getElementById('root')
);
  1. 可以在if语句和for循环中使用jsx以及从函数中返回jsx
function getGreeting(user) {
  if (user) {
    return <h1>Hello, {formatName(user)}!h1>;
  }
  return <h1>Hello, Stranger.h1>;
}

2.可以用引号将属性值指定为字符串字面量;
const element =

;
3.也可以使用大括号插入js表达式;
const element = ;
4.同一属性不能同时使用引号和大括号
5.所有的属性都是小驼峰命名法JSX 里的 class 变成了 className,而 tabindex 则变为 tabIndex。
6.如果标签中没有内容,可以用/>闭合标签
7.jsx标签里可以包含喝多子元素
8.可以安全的在jsx当中输入内容:React DOM 在渲染所有输入内容之前,默认会进行转义。它可以确保在你的应用中,永远不会注入那些并非自己明确编写的内容。
9.Babel 会把 JSX 转译成一个名为 React.createElement() 函数调用。

const element = (
  <h1 className="greeting">
    Hello, world!
  h1>
);

两种代码完全等效

const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

10.React.createElement() 会预先执行一些检查,以帮助你编写无错代码,但实际上它创建了一个这样的对象:

const element = {
  type: 'h1',
  props: {
    className: 'greeting',
    children: 'Hello, world!'
  }
};

你可能感兴趣的:(react.js,javascript,学习)