react入门----组件的基础用法

1、组件

 1 <!-- React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件。React.createClass 方法就用于生成一个组件类 -->
 2         var HelloMessage = React.createClass({
 3           render: function() {
 4             return <h1>Hello {this.props.name}</h1>
 5           }
 6         })
 7     <!-- 变量 HelloMessage 就是一个组件类。模板插入 <HelloMessage /> 时,会自动生成 HelloMessage 的一个实例(下文的"组件"都指组件类的实例)。所有组件类都必须有自己的 render 方法,用于输出组件。 -->
 8         ReactDOM.render(
10           <HelloMessage name="John" />,
11           document.getElementById(‘example‘)
12         )

2、组件要注意的两个规则(a.组件名的第一个字母,必须大写,否则会报错,b.组件类只能包含一个顶层标签,否则也会报错)

var HelloMessage = React.createClass({
          render: function() {
            return <h1>
              Hello {this.props.name}
            </h1><p>
              some text
            </p>
          }
        })
        <!-- 上面代码会报错,因为HelloMessage组件包含了两个顶层标签:h1和p。 -->
        <!-- 组件的用法与原生的 HTML 标签完全一致,可以任意加入属性,比如 <HelloMessage name="John"> ,    就是 HelloMessage 组件加入一个 name 属性,值为 John。组件的属性可以在组件类的 this.props 对象上获取,比如 name 属性就可以通过 this.props.name 读取。 -->

3.this.props.children的使用和注意事项

  a.this.props.children 的值有三种可能:如果当前组件没有子节点,它就是 undefined ;如果有一个子节点,数据类型是 object ;如果有多个子节点,数据类型就是 array 。所以,处理 this.props.children 的时候要小心。

  b.React 提供一个工具方法 React.Children 来处理 this.props.children 。我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object。更多的 React.Children 的方法。

 1 var NyComponent = React.createClass({
 2             render: function () {
 3                 return(
 4                     <ol>
 5                         <!-- this.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点  -->
 6                             React.Children.map(this.props.children, function(child) {
 7                                 return <li>{child}</li>
 8                             })
 9                         }
10                     </ol>)
11             }
12         })
13         <!-- 上面代码的 NyComponent 组件有两个 span 子节点,它们都可以通过 this.props.children 读取 -->
14         <!-- 这里需要注意, this.props.children 的值有三种可能:如果当前组件没有子节点,它就是 undefined ;如果有一个子节点,数据类型是 object ;如果有多个子节点,数据类型就是 array 。所以,处理 this.props.children 的时候要小心。 -->
15         <!-- React 提供一个工具方法 React.Children 来处理 this.props.children 。我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object。更多的 React.Children 的方法, -->
16         ReactDOM.render(
17             <NyComponent>
18                 <span>hello</span>
19                 <span>world</span>
20             </NyComponent>,
21             document.getElementById(‘container‘)
22         )

4.PropTypes

  a.组件的属性可以接受任意值,字符串、对象、函数等等都可以。有时,我们需要一种机制,验证别人使用组件时,提供的参数是否符合要求。

  b.组件类的PropTypes属性,就是用来验证组件实例的属性是否符合要求

 1 <!-- 组件的属性可以接受任意值,字符串、对象、函数等等都可以。有时,我们需要一种机制,验证别人使用组件时,提供的参数是否符合要求。 -->
 2         <!-- /组件类的PropTypes属性,就是用来验证组件实例的属性是否符合要求 -->
 3         var MyTestComponent = React.createClass({
 4             propTypes: function () {
 5                 title: React.PropTypes.string.isRequired
 6             },
 7             render: function () {
 8                 return <h1> {this.props.title} </h1>
 9             }
10         })
11         <!-- 上面的Mytitle组件有一个title属性。PropTypes 告诉 React,这个 title 属性是必须的,而且它的值必须是字符串。现在,我们设置 title 属性的值是一个数值。 -->
12         <!-- 这样一来,title属性就通不过验证了。控制台会显示一行错误信息。 -->
13         var data = 123
14         ReactDOM.render(<MyTestComponent title={data}/>,document.getElementById(‘container‘))
15         <!-- 此外,getDefaultProps 方法可以用来设置组件属性的默认值。 -->
16         var MyTitle = React.createClass({
17           getDefaultProps : function () {
18             return {
19               title : ‘Hello World‘
20             };
21           },
22
23           render: function() {
24              return <h1> {this.props.title} </h1>;
25            }
26         });
27
28         ReactDOM.render(
29           <MyTitle />,
30           document.body
31         );
时间: 2024-10-01 00:22:58

react入门----组件的基础用法的相关文章

React入门--------组件的声明周期

Mounting/组件挂载相关: componentWillMount componentDidMount Updating/组件更新相关: componentWillReceiveProps shouldComponentUpdate componentWillUpdate componentDidUpdate Unmounting/组件移除相关: componentWillUnmount 一.Mounting/组件挂载相关 componentWillMount 在组件挂载之前执行,但仅执行一

React入门---组件嵌套-5

组件嵌套 我们现在需要组件嵌套,所以要创建其他组件,目前有一个头部组件,在./components/header.js; 接下来在components文件中创建:底部组件footer.js 和主体组件BodyIndex.js 项目框架应该为: 底部组件footer.js 和主体组件BodyIndex.js代码编译: 1. header.js (之前有编译过) import React from 'react'; import ReactDOM from 'react-dom'; //创建一个类

React入门--------组件API

setState 参数:nextState(object),[callback(function)] 设置nextState的某个键值.通常如果希望在某个事件或某个回调中来重新渲染组件,setState是一个最常用的触发方法,因为我们把UI内容跟state状态直接绑定在一起,一旦state发生改变并触动了绑定的逻辑,那么ui内容自然也会跟着变动: var Component1 = React.createClass({ getInitialState: function() { return {

react入门-组件方法、数据和生命周期

react组件也像vue一样,有data和methods,但是写法就很不同了: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta ht

机器学习初入门01-numpy的基础用法

一.numpy基础结构 1. numpy.genformtxt('路径名', delimiter = '分割符', dytype = 读取方式如str ):读取一个文件,返回一个numpy.ndarray结构的数据,这里给出了一个形式,更多参数信息参考help(numpy.genformtxt) 2. numpy.ndarray可看成是一个矩阵结构 3. numpy.array(list):把一个 list 转换成 ndarray 格式并返回,下面举两个例子 vector = numpy.arr

react基础用法一(在标签中渲染赋值)

react基础用法一(渲染赋值) 如图所示最简单的变量使用方法 格式 let 变量名称 = 赋值: 渲染格式直接用 {变量名称} 就可以直接渲染到页面 如图所示第二种渲染方法 格式 const 变量名称 = <标签>内容</标签> 渲染格式 {变量名称} 即可渲染到页面展示 如图所示也可以渲染一个对象包括它的属性对应展示到页面 格式 const 对象名称 = { key : value } 多个对象属性需要{ key1 : value1, key2 : value2 }用逗号分隔

Vue组件基础用法

前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需,使用不同的组件来拼接页面.这种开发模式使前端页面易于扩展,且灵活性高,而且组件之间也实现了解耦.本文将详细介绍Vue组件基础用法 概述 组件是一个自定义元素或称为一个模块,包括所需的模板.逻辑和样式.在HTML模板中,组件以一个自定义标签的形式存在,起到占位符的功能.通过Vue.js的声明式渲染后,

React 入门实例教程

React 入门实例教程 作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西很好用,就在2013年5月开源了. 由于 React 的

(转)React 入门实例教程

作者: 阮一峰 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西很好用,就在2013年5月开源了. 由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非