React学习(二) React基础JSX

上一篇文章我们介绍了 React的使用,并在通过了解create-react-app生成的目录结构后写了自己的第一个React程序。这一次我们讲系统讲解一下React的基础内容。

JSX

const element = <h1>Hello, world!</h1> 这个既不是字符串也不是HTML,这个就是JSX的语法,注意在使用JSX语法的时候一定要先引入 React,也就是 import react from 'react'

  • 嵌入表达式
    const name = 'Jeff';
    const el = <h1>Hello, { name }</h1>;
    
    在jsx中的表达式必须要用大括号括起来,这样react才会解析你的表达式。而且在大括号中我们还可以写方法调用,计算等。
    function formatName(user) {
     return user.firstName + ' ' + user.lastName
    }
    const user = {
     firstName: 'Jeff',
     lastName: 'Wang'
    }
    cosnt el = <h1>Hello, { formatName(user) }</h1>
    
  • 在for循环或if判断中使用JSX
    // if 判断中使用jsx
    function getGreeting(user) {
      if (user) {
        return <h1>Hello, { formatName(user) }!</h1>
      } else {
        return <h1>Hello, Stranger.</h1>
      }
    }
    
    // for 循环使用
      const list = [
        { id: 1, title: 'this is news 1' },
        { id: 2, title: 'this is news 2' }
      ]
      const listEl = list.map((v, i) => (
        <li key={v.id}>{v.title}</li>
      ))
     // 注意上面箭头函数后面我跟了一个 (),它等价于 => {return <li key={v.id}>{v.title}</li> }
    

使用注意点

  1. jsx中有的html属性需要大写,例如 class需要写成className,click 需要写成onClick等,并且每一项都是驼峰命名,如果你写成tabindex是不生效的。
  2. jsx 自动做了防止注入攻击,如果你像输出一个带html标签的内容,需要写成如下格式<h1 dangerouslySetInnerHTML={{__html: 'cc &copy; 2015'}}></h1> 这样就可以完整输出你的内容。
  3. 标签闭合,假如你只是一个子元素 可以直接写成 <InputBox />
  4. jsx 是一个对象,js中使用需要利用babel转成js对象,例如:
      const element = (
        <h1 className="greeting">
        Hello, world!
       </h1>
      ); 
      //  上面的jsx 等价于
      const element = React.createElement(
        'h1',
        {className: 'greeting'},
        'Hello, world!'
      );
      // 也等价于
      const element = {
        type: 'h1',
        props: {
          className: 'greeting',
          children: 'Hello, world'
        }
      };
    

今天我们就学这么多内容,有什么问题可在留言去留言,有 不足指出请大家指出。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于JSX 考虑这样一段代码:const element = Hello, world! ;这段代码既不是字符串...
    带三本书阅读 386评论 0 1
  • 以下内容是我在学习和研究React时,对React的特性、重点和注意事项的提取、精练和总结,可以做为React特性...
    科研者阅读 8,297评论 2 21
  • 3. JSX JSX是对JavaScript语言的一个扩展语法, 用于生产React“元素”,建议在描述UI的时候...
    pixels阅读 2,896评论 0 24
  • 思考一下这样的变量声明: const element = Hello, world! ; 上面这个好玩的标记语法...
    编码的哲哲阅读 3,489评论 0 0
  • (一) 人生而孤独,却不甘寂寞,世界万物都是相互依赖的。——卡尔·马克思 海明威曾说:人不可...
    冰语夏虫阅读 1,332评论 0 1