Jsx 入门

本文介绍了使用ReactDOM.render在React中渲染JSX模板的原理和注意事项,包括 JSX 的基本语法、单根节点要求、注释方式、表达式使用、事件绑定、属性设置以及样式绑定等。同时,通过示例展示了如何处理不同类型的变量值、数组渲染、条件渲染以及样式的对象绑定。最后,通过一个完整的例子展示了如何在实际应用中组合这些概念。
摘要由CSDN通过智能技术生成

使用 ReactDOM.render 在指定的节点渲染 模板内容

        这里说的模板 指的是一个jsx 内容

        因为直接使用字符串会有一系列的不方便 比如说拼接 还有一些逻辑的使用等等

        jsx 的本质  就是一个表达式!!! 表达式!!! 表达式!!!

        使用jsx的第一目的就是 让我们能更像写html一样写模板

        jsx的语法特征

        1.jsx 只能有一个根节点   error: Adjacent JSX elements must be wrapped in an enclosing tag

        2.jsx 当中的注释方式  { /* 我是注释内容 */ } babel默认不会把这个注释显示到最后的结果当中

        3.jsx 使用 {} 来引入一个 表达式!  

        4.{ }  如果引入的表达式是  undefine 布尔值  null 是不会渲染内容的

        5.{ } 在子节点当中不能使用{} 引入对象  error: Objects are not valid as a React child (found: object with keys {}). If you meant to render a collection of children, use an array instead.

        6.{ } 引入数组 那么数组里面的内容会依次渲染出来 ,如果数组当中的成员是jsx的话那么每个jsx最外层都要绑定一个唯一的key(尽可能的不要用索引值作为key)

        7.jsx当中 节点可以使用 on+事件名 驼峰的写法(onClick)来绑定事件, 事件等于的值一定要是一个函数,触发的函数得到的第一个参数就是event对象

        8.jsx 节点当中 class属性 要写成 className (因为会跟 类组件当中的class有混淆)

        9.jsx 的style的绑定 的值是一个对象

let a;  // undefine
        let a1 = true;  
        let a2 = null;
        let a3 = NaN; // 数字 所以会直接渲染出来
        let a4 = 'abcdefg'
        let a5 = {}
        let a6 = [1,3,4,5,6,true,'abc']

        

        // 给每个jsx都设置一个唯一的key  如果key有重复的话会有报错 Warning:Encountered two children with the same key
        // 没有key Warning:  Each child in a list should have a unique "key" prop.
        let a7 = [
          <div key="1">1</div>,
          <div key="2">2</div>,
          <div key="3">3</div>
        ]

        let a8 = [
          { id: 1, title: '我是标题1'},
          { id: 2, title: '我是标题2' },
          { id: 3, title: '我是标题3' },
        ]

        let a9 ='c1'
        let a10 = 'c2'
        let a11 = false

        const fn1 = (ev)=>{
          console.log('fn1 fired',ev)
        }

        const ct = (
                     <span>
                        <h1>1</h1>
                        <h1>2</h1>
                        { /* 单行注释  */}
                        <h1> { a } </h1>
                        <h1> { a1 } </h1>
                        <h1> { a2 } </h1>
                        <h1> { a3 } </h1>
                        <h1> { a4 } </h1>
                        {/*  列表渲染(渲染数组)  */}
                        { a6 }
                        { a7 }
                        
                        { a8.map( (item,index)=> <div key={item.id}> {item.title} </div> ) }
                        <button onClick={ fn1 }>事件的绑定</button>

                        {/*  属性的绑定  */}
                        <div className={a9} id={a10}>   属性的绑定  </div>
                        {/*  条件渲染  */}
                         { a11 && <div>是否渲染</div> }
                         { 0 && <div>是否渲染</div> }
                         { a11 ? <div>左边</div> : <div>右边</div>  }

                        {/*  样式的绑定  样式使用一个对象来表示 */}
                        <div style={ {fontSize:'20px',color:'red'} }> 样式的绑定  </div>
      
                     </span>
                    )
  
         ReactDOM.render( ct ,document.querySelector('#app') );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值