美文网首页React
react学习-4.JSX语法进阶

react学习-4.JSX语法进阶

作者: YINdevelop | 来源:发表于2018-05-02 16:47 被阅读35次

既然JSX是JavaScript 的语法扩展,与JavaScript之间等价转换,那自然而然,我们可以在jsx中使用js语法。

1.JSX中的表达式

  • JSX是支持表达式的,你只要使用一个大{ }括号,就可以使用表达式了。

我们把HelloWorld程序改写成使用表达式的。

const str = ',World'
function sayhi(name) {
  return 'Hi,' + name;
}
const element = <h1>Hello{str}{sayhi('react')}</h1>;

ReactDOM.render(element, document.getElementById('root'));   //Hello,WorldHi,react

2.JSX中的数组

  • JSX中的数组进行遍历时,需要加key属性,如果没有key虽然会出来效果,但是控制台会包错。key的作用是生成虚拟DOM时,需要使用key来进行标记,DOM更新时进行比较。

      const arr = ['Hello', 'React'];
      const str1 = (
        <div>
          {arr.map(function (name) {
              return (
                  <p key={name}>{name}</p>
              )
            })}
        </div>
      )
      
      ReactDOM.render(
        str1, document.getElementById('root'));
      //Hello 
      //React
    
  • JSX允许直接在模版插入JavaScript变量。如果这个变量是一个数组,则会展开这个数组的所有成员。

      const arr=[
          <h1 key="Hello">Hello</h1>,
          <h2 key="React">React</h2>
      ];
      ReactDOM.render(<div>{arr}</div>, document.getElementById('root'));  
      //Hello
      //React 
    

3.JSX 属性

JSX 的标签同样可以拥有自己的属性:

const title = <h1 id="main">React Learning</h1>
  • 但它和 HTML 又不是完全相同的,例如我们想要为 JSX标签添加 class 的时候需要换成className而不是class
    const title = <h1 className="main">React Learning</h1>
  • 因为 JSX 的特性更接近 JavaScript 而不是 HTML,所以 React DOM 使用 camelCase 小驼峰命名 来定义属性的名称,而不是使用 HTML 的属性名称。如常用的点击事件用onClick而不是onclick等。

4.JSX 嵌套

  • JSX 的标签也可以像 HTML 一样相互嵌套,一般有嵌套解构的 JSX 元素外面,我们习惯于为它加上一个小括号

      const element = (
        <div>
          <h1>Hello!</h1>
          <h2>Good to see you here.</h2>
        </div>
      );
    
  • JSX 在嵌套时,最外层有且只能有一个标签,否则就会报错.

      // 这是一个错误示例 
      const title = ( 
        <h1 className="main">React Learning</h1> 
        <p>Let's learn JSX</p>
       )
    

下一篇——react学习-5.React组件

相关文章

网友评论

    本文标题:react学习-4.JSX语法进阶

    本文链接:https://www.haomeiwen.com/subject/yspcrftx.html