美文网首页
React 学习之组件基础

React 学习之组件基础

作者: 张小团子 | 来源:发表于2017-03-17 12:07 被阅读0次

    React虚拟DOM概念

    在React中,render执行的结果得到的并不是真正的DOM节点,结果仅仅是轻量级的JavaScript对象,我们称之为virtual DOM。

    和 DOM 操作比起来,js 计算是非常便宜的。基于JS的virtual DOM相比于直接重置真事的DOM,效率提升了不少。React中,更改某个节点内容,只会对当前节点进行更改渲染,不会重置整个DOM树。

    React组件

    组件是React中一个主要的特性。将页面不同的部分划分成不同的组件进行单独开发,对于模块化开发具有重要意义。同时,一个组件可以复用在不同的页面中,提高的代码的重用性和可维护行。

    组件的创建

    首先,建议通过npm来使用React。webpack 安装 React DOM 和构建你的包:
    $npm install --save react react-dom babel-preset-react$webpack
    注意: 如果你正在使用 ES2015, 你将要使用babel-preset-es2015包。

    一个组件就是在通过React声明的一个类,具体过程如下:
    首先要导入‘React’ 模块: import React from 'react';

    import React from 'react';
    export default class ComponentExample extends React.Component {
        render() {
            return (
                <h1>Hello World</h1>
            )
    }
    

    这样就定义了一个简单的可以给外部使用的React组件。“ComponentExample”为定义的组件名称,“export default” 关键字定义了这个组件是可以被外部引用的,以<ComponentExample />形式作为一个元素为其他组件使用。
    例如:

    import ComponentExample '路径';
    class Index extends React.Component {
    
        render() {
            return (
                   <div>
                      <ComponentExample/>
                      <h2>Hi, Maggie</h2>
                  </div>
            )
        }
    }
    

    用import关键字将ComponentExample引入进来,那么<ComponentExample/>就被作为一个子组件嵌套在Index组件中。

    React多组件嵌套

    以Index组件为例。假如我们定义了一个<ComponentExample/>和<ComponentExample2/>我们可以将这两个组件被Index组件使用:

    class Index extends React.Component {
    
        render() {
            return (
                   <div>
                      <ComponentExample/>
                      <ComponentExample2/>
                  </div>
            )
        }
    }
    

    这里需要注意的是组件的return函数里返回的HTML节点必须是一个。因此需要将所有组件包含在一个外部节点中。

    值的注意的是,组件的命名规范与文件的结构化在团队开发中是非常重要的。

    组件入口的定义

    如何将组件添加到HTML文件中呢?这就需要ReactDOM来定义其入口。
    首先,在html文件中创建一个入口节点,如:

    <div id="example"></div>
    

    再以Index节点为例,将其加载到html文件id为“example”的节点中。

    var ReactDOM = require('react-dom');
    var React = require('react');
    
    class Index extends React.Component {
    
        render() {
            return (
                   <div>
                      <ComponentExample/>
                      <ComponentExample2/>
                  </div>
            )
        }
    }
    ReactDOM.render(
        <Index/>,
        document.getElementById('example')
    );
    

    这样Index组件中的内容就可以在html中显示了。

    相关文章

      网友评论

          本文标题:React 学习之组件基础

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