美文网首页
React学习记录:JSX

React学习记录:JSX

作者: summer_味道制造 | 来源:发表于2017-10-14 11:29 被阅读0次

    在React中启用了javaScript的语法扩展,也就是所谓的JSX,JSX可以让我们在javaScript中书写如同HTML一样的代码:

    class AddTodo extends Component {
      render() {
        return (
          <div>
            <input type='text' ref='input' />
            <Test/>
            <button onClick={(e) => this.handleClick(e)}>
              Add
            </button>
          </div>
        )
      }
    }
    

    这是一个React组件,render包含的就是一段JSX的代码。
    跟HTML很像,像亲兄弟一样,但它们并不完全一样,在JSX中都可以使用HTML的标签,但反过来就不行了。

    在JSX中的元素,除了HTML标签之外,还可以是任何的React组件,在上面的代码我们可以看到,代码中有一个<Test/>组件,被直接放在了JSX的代码中,就像直接使用HTML标签一样,而HTML则只能写入HTML标签。

    那么React如何来确认一个元素是React组件,还是HTML元素呢?

    React判断一个元素是HTML元素还是React组件的原则就是看第一个字母是否大写。

    在JSX中可以通过onClick给元素添加事件函数,如上代码中<button>中的元素所示,事件的添加的方式与在HTML中写在行间的onclick很像,但它们之间也是有区别的。

    • 在HTML行间添加onclick的事件函数是在全局环境下执行的,会污染全局环境,很容易产生不可预料的后果
      给过多的DOM元素添加onclick事件可能会影响网页性能
    • 对于使用了onclick事件的DOM元素,如果要动态的从DOM树中删除,需要把对应的事件注销,如果忘了注销可能会造成内存泄露
    • 在JSX中则不存在上述的问题,JSX中的onClick挂载的每一个方法都可以控制在组件内部,不会污染全局变量,在JSX中使用onClick,并不是直接产生直接使用onclickde的HTML,而是使用了事件委托,无论出现了多少给onclick,其实都只在DOM树上添加了一个事件函数,挂在最顶层的DOM节点上,事件委托的性能显然是要优于HTML的onclick的,且React可以控制组件的生命周期,在组件卸载时可以清除相关的事件函数,内存泄露也不再是一个问题。

    相关文章

      网友评论

          本文标题:React学习记录:JSX

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