React 组件化嵌套

React 组件化嵌套


组件

简单的理解组件就是,页面中可以有很多模块,如果将每个模块写成单独的组件,我就可以实现组件的复用。比如一个页面的头部,很多页面可能都会使用这个头部。
这里写图片描述
上面的页面,可以这样进行划分组件,其他的页面也可以调用。废话不多说,直接上代码看效果

代码

在这之前写过一篇webpack+React的热加载配置,这里就不写了,不会的可以点击下面的链接看看
webpack+React的热加载
这里就直接从代码入手

文件目录

热加载配置之后的文件目录为
这里写图片描述

(这里提示一下,只是根目录不一样)

然后在js文件夹下面创建一个components文件夹,用来存放所有的组件。下面的就是创建之后的文件目录。
这里写图片描述

然后就在components文件夹下创建组件,我这里用到了三个组件,就建三个组件js。header.js , footer.js , BodyIndex.js。

代码

首先写index.html

<div id="example">123</div>
<script src="bundle.js"></script>

这里的id为example的div为容器,引入的js是webpack打包之后的js文件。

然后我们进行组件的开发

header.js

import  React from 'react';
import ReactDom from 'react-dom';

export default class ComponentHeader extends React.Component{
    render(){
        return (
            <header>
                <h1>这里是头部</h1>
            </header>
        )
    }
}

BodyIndex.js

import React from 'react';

export default class BodyIndex extends React.Component{
    render(){
        return(
            <div>
                <h1>这里是主要的页面信息</h1>
            </div>
        )
    }
}

footer.js

import React from 'react';
import ReactDOM from 'react-dom';

export default class ComponentMyself extends React.Component{
    render(){
        return(
            <footer>
                <h3>这里是脚部</h3>
            </footer>
        )
    }
}

可以看见上面的代码差不多,只是组件名不一样,其中要注意的是:

  1. 因为是组价,要被其他组件引用,所以必须导出,不然别的地方获取不到这个组件。
  2. 在定义组件的时候是用class来定义的,继承于React的Component。
  3. 定义组件时,组件名的首字母必须大写。
  4. 返回时,只能将代码放入一个容器中返回,不能是一下的代码样式
export default class ComponentMyself extends React.Component{
    render(){
        return(
            <footer>
                <h3>这里是脚部</h3>
            </footer>
            <div>这是第二个容器</div>
        )
    }
}

接下来定义一个index.js,去调用前面的三个组件。

var React = require('react');
var ReactDOM = require('react-dom');
import ComponentHeader from './components/header';
import BodyIndex from './components/BodyIndex';
import ComponentMyself from './components/footer';

class Index extends React.Component{
    render(){
        return(
            <div>
                <ComponentHeader />
                <BodyIndex />
                <ComponentMyself />
            </div>
        )
    }
}

ReactDOM.render(
    <Index/>,
    document.getElementById('example')
)

可以看到这里调用组件的时候使用的是

import 组件名from '组件地址'

定义了一个Index组件,并调用其他三个组件,因为这个组件不被其他的调用,所以没有使用export。并且返回的也是一个容器。组件使用的时候,直接写组件名就可以了,也可以进行变量的替换。比如:

var React = require('react');
var ReactDOM = require('react-dom');
import ComponentHeader from './components/header';
import BodyIndex from './components/BodyIndex';
import ComponentMyself from './components/footer';

class Index extends React.Component{
    render(){
        var footer = <ComponentMyself />
        return(
            <div>
                <ComponentHeader />
                <BodyIndex />
                {footer}
            </div>
        )
    }
}

ReactDOM.render(
    <Index/>,
    document.getElementById('example')
)

最后就是将写的东西加载到页面中。使用ReactDOM.render()方法,获取到id为example的容易。到这里就已经完成了简单的组件嵌套。因为之前已经有热加载,这里只需要保存,然后在页面中打开webpack热加载后生成的那个地址就可以查看效果了。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值