• 技术文章 >web前端 >js教程

    React中组件定义使用详解

    php中世界最好的语言php中世界最好的语言2018-05-24 14:39:58原创794
    这次给大家带来React中组件定义使用详解,React中组件定义使用的注意事项有哪些,下面就是实战案例,一起来看一下。

    组件

    组件使你可以将 UI 划分为一个一个独立,可复用的小部件,并可以对每个部件进行单独的设计。

    在单页面应用(SPA)中扮演着重要角色

    组件简单实现 —— 函数式组件

    import React from 'react'
    import ReactDOM from 'react-dom'
    let Component1 = () => {
        return <h1>React Component</h1>
    }
    ReactDOM.render(
        <Component1 />,
        document.getElementById('app')
    )

    类组件 —— ES5 语法

    var React = require('react');
    var ReactDOM = require('react-dom')
    var Component1 = React.createClass({
        render: function(){
            return (
                <p>
                    <h1>Tom</h1>
                    <h1>Sam</h1>
                </p>
            )
        }
    })
    ReactDOM.render(
        <Component1 />,
        document.getElementById('app')
    )

    类组件 —— ES6 语法

    import React from 'react'
    import ReactDOM from 'react-dom'
    class Component1 extends React.Component{
        render(){
            return (
                <p>
                    <h1>Tom</h1>
                    <h1>Sam</h1>
                </p>
            ) 
        }
    }
    ReactDOM.render(
        <Component1 />,
        document.getElementById('app')
    )

    效果预览

    组件小结

    组件属性(Props)

    因为组件的调用是 html 标签的形式,而 html 标签是可以添加属性,所以在 React 的组件当中也是可以添加自定义的属性,而属性的获取则用 this.props

    函数式组件

    import React from 'react'
    import ReactDOM from 'react-dom'
    let Component1 = (props) => {
        return <h1>name-{props.name}</h1>
    }
    ReactDOM.render(
        <Component1 name="Sam"/>,
        document.getElementById('app')
    )

    类组件

    import React from 'react'
    import ReactDOM from 'react-dom'
    class Component1 extends React.Component{
        render(){
            return <h1>name-{this.props.name}</h1> 
        }
    }
    ReactDOM.render(
        <Component1 name="Sam"/>,
        document.getElementById('app')
    )

    默认属性(DefaultProps)

    组件的属性除了可以通过调用的时候以 DOM 节点属性的方式传值,也可以设置默认的属性值,如果调用的时候没有传对应的属性值,则会用默认的属性值。
    getDefalutProps 这个方法只会被调用一次。

    //es5
    var React = require('react');
    var ReactDOM = require('react-dom');
    var Component1 = React.createClass({
        getDefaultProps: function(){
            return {
                name: 'Tom',
                age: 20
            }
        },
        render: function(){
            return (
                <p>
                    <p>姓名:{this.props.name}</p>
                    <p>年龄:{this.props.age}</p>
                </p>
            )            
        }    
    })
    //es6
    import React from 'react';
    import ReactDOM from 'react-dom';
    class Component1 extends React.Component{
        static defaultProps = {
            name: 'Tom',
            age: 20
        }
        render(){
            return (
                <p>
                    <h1>姓名:{this.props.name}</h1>
                    <h1>年龄:{this.props.age}</h1>
                </p>
            )
        }
    }
    //或者
    Component1.defaultProps = {
        name: "Sam",
        age: 22
    }
    //使用
    ReactDOM.render(<Component1/>, document.getElementById('p1'));

    属性的类型规则(propTypes)

    通常情况下,在定义一个组件的时候把属性定义好,会加上一些使用的条件限制,比如某些属性值的数据类型必须是数组,或者某些属性不能为空,在这个时候,可以通过 propTypes 来设置。

    import React from 'react';
    import ReactDOM from 'react-dom';
    import PropTypes from 'prop-types'
    class Component1 extends React.Component{
        render(){
            return (
                <p>
                    <p>姓名:{this.props.name}</p>
                    <p>年龄:{this.props.age}</p>
                    <p>学科:</p>
                    <ul>
                    {
                        this.props.subjects.map(function(_item){
                            return <li>{_item}</li>
                        })
                    }
                    </ul>
                </p>
            )
        }
    }
    //定义属性 name 为字符串且必须有值
    Component1.propTypes = {
        name: PropTypes.string
    }
    ReactDOM.render(<Component1 name="Tom"/>, document.getElementById('p1'));

    prop 默认情况下是可选,常用的类型:

    组件

    组件使你可以将 UI 划分为一个一个独立,可复用的小部件,并可以对每个部件进行单独的设计。

    在单页面应用(SPA)中扮演着重要角色

    组件简单实现 —— 函数式组件

    import React from 'react'
    import ReactDOM from 'react-dom'
    let Component1 = () => {
        return <h1>React Component</h1>
    }
    ReactDOM.render(
        <Component1 />,
        document.getElementById('app')
    )

    类组件 —— ES5 语法

    var React = require('react');
    var ReactDOM = require('react-dom')
    var Component1 = React.createClass({
        render: function(){
            return (
                <p>
                    <h1>Tom</h1>
                    <h1>Sam</h1>
                </p>
            )
        }
    })
    ReactDOM.render(
        <Component1 />,
        document.getElementById('app')
    )

    类组件 —— ES6 语法

    import React from 'react'
    import ReactDOM from 'react-dom'
    class Component1 extends React.Component{
        render(){
            return (
                <p>
                    <h1>Tom</h1>
                    <h1>Sam</h1>
                </p>
            ) 
        }
    }
    ReactDOM.render(
        <Component1 />,
        document.getElementById('app')
    )

    效果预览

    组件小结

    组件属性(Props)

    因为组件的调用是 html 标签的形式,而 html 标签是可以添加属性,所以在 React 的组件当中也是可以添加自定义的属性,而属性的获取则用 this.props

    函数式组件

    import React from 'react'
    import ReactDOM from 'react-dom'
    let Component1 = (props) => {
        return <h1>name-{props.name}</h1>
    }
    ReactDOM.render(
        <Component1 name="Sam"/>,
        document.getElementById('app')
    )

    类组件

    import React from 'react'
    import ReactDOM from 'react-dom'
    class Component1 extends React.Component{
        render(){
            return <h1>name-{this.props.name}</h1> 
        }
    }
    ReactDOM.render(
        <Component1 name="Sam"/>,
        document.getElementById('app')
    )

    默认属性(DefaultProps)

    组件的属性除了可以通过调用的时候以 DOM 节点属性的方式传值,也可以设置默认的属性值,如果调用的时候没有传对应的属性值,则会用默认的属性值。
    getDefalutProps 这个方法只会被调用一次。

    //es5
    var React = require('react');
    var ReactDOM = require('react-dom');
    var Component1 = React.createClass({
        getDefaultProps: function(){
            return {
                name: 'Tom',
                age: 20
            }
        },
        render: function(){
            return (
                <p>
                    <p>姓名:{this.props.name}</p>
                    <p>年龄:{this.props.age}</p>
                </p>
            )            
        }    
    })
    //es6
    import React from 'react';
    import ReactDOM from 'react-dom';
    class Component1 extends React.Component{
        static defaultProps = {
            name: 'Tom',
            age: 20
        }
        render(){
            return (
                <p>
                    <h1>姓名:{this.props.name}</h1>
                    <h1>年龄:{this.props.age}</h1>
                </p>
            )
        }
    }
    //或者
    Component1.defaultProps = {
        name: "Sam",
        age: 22
    }
    //使用
    ReactDOM.render(<Component1/>, document.getElementById('p1'));

    属性的类型规则(propTypes)

    通常情况下,在定义一个组件的时候把属性定义好,会加上一些使用的条件限制,比如某些属性值的数据类型必须是数组,或者某些属性不能为空,在这个时候,可以通过 propTypes 来设置。

    import React from 'react';
    import ReactDOM from 'react-dom';
    import PropTypes from 'prop-types'
    class Component1 extends React.Component{
        render(){
            return (
                <p>
                    <p>姓名:{this.props.name}</p>
                    <p>年龄:{this.props.age}</p>
                    <p>学科:</p>
                    <ul>
                    {
                        this.props.subjects.map(function(_item){
                            return <li>{_item}</li>
                        })
                    }
                    </ul>
                </p>
            )
        }
    }
    //定义属性 name 为字符串且必须有值
    Component1.propTypes = {
        name: PropTypes.string
    }
    ReactDOM.render(<Component1 name="Tom"/>, document.getElementById('p1'));

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    react实现选中li高亮步骤详解

    前端中排序算法实例详解

    以上就是React中组件定义使用详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:React 详解 使用
    上一篇:React中组件渲染使用详解 下一篇:React中JSX 语法使用详解
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• JavaScript弱映射与弱集合知识详解• 一篇搞定JavaScript DOM详细操作• 深入聊聊JavaScript• JavaScript迭代器知识点总结• javascript web页面刷新的方法收集_javascript技巧
    1/1

    PHP中文网