美文网首页
ReactJS_03 React 组件

ReactJS_03 React 组件

作者: 习惯芥末味 | 来源:发表于2018-10-03 18:33 被阅读0次

    组件从概念上看就像是函数,它可以接收任意的输入值(称之为“props”),并返回一个需要在页面上展示的React元素。

    定义组件的两种方法:函数定义组件和类定义组件

    函数定义

    定义一个组件最简单的方式是使用JavaScript函数:

    function HelloMessage(props) {
        return <h1>Hello World!</h1>;
    }
     
    const element = <HelloMessage />;
     
    ReactDOM.render(
        element,
        document.getElementById('example')
    );
    

    类定义组件

    你也可以使用 ES6 class 来定义一个组件:

    class Welcome extends React.Component {
      render() {
        return <h1>Hello World!</h1>;
      }
    }
    
    const element = <Welcome />;
     
    ReactDOM.render(
        element,
        document.getElementById('example')
    );
    

    const element = <HelloMessage /> 为用户自定义的组件。

    注意:原生 HTML 元素名以小写字母开头,而自定义的 React 类名以大写字母开头,比如 HelloMessage不能写成 helloMessage。除此之外还需要注意组件类只能包含一个顶层标签,否则也会报错。

    如果我们需要向组件传递参数,可以使用 this.props 对象:

    function HelloMessage(props) {
        return <h1>Hello {props.name}!</h1>;
    }
     
    const element = <HelloMessage name="Runoob"/>;
     
    ReactDOM.render(
        element,
        document.getElementById('example')
    );
    

    以上实例中name属性通过props.name来获取。

    注意:在添加属性时, class属性需要写成classNamefor属性需要写成htmlFor ,这是因为classfor 是 JavaScript 的保留字。

    复合组件

    我们可以通过创建多个组件来合成一个组件,即把组件的不同功能点进行分离。

    function Name(props) {
        return <h1>网站标题:{props.name}</h1>;
    }
    function Url(props) {
        return <h1>网站地址:{props.url}</h1>;
    }
    function Nickname(props) {
        return <h1>网站内容:{props.nickname}</h1>;
    }
    function App() {
        return (
        <div>
            <Name name="React.js" />
            <Url url="http://www.https://www.jianshu.com/writer#/notebooks/29971130/notes/34731531/preview.com" />
            <Nickname nickname=" React 组件" />
        </div>
        );
    }
     
    ReactDOM.render(
         <App />,
        document.getElementById('example')
    );
    
    运行结果

    案例中App 组件使用了 Name、Url 和 Nickname 组件来输出对应的信息

    相关文章

      网友评论

          本文标题:ReactJS_03 React 组件

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