react-菜鸟笔录

(1)简介

  

 

   

 

   第一个实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
    <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>
    <div id="demo"></div>
    <script type="text/babel">
        ReactDOM.render(
            <h1>测试</h1>,
            document.getElementById('demo')
        )
    </script>
</body>
</html>

  效果如下

  

 

(2)安装

  

   案例:

  

 

   

 

   

 

 注意:

如果我们需要使用 JSX,则 <script> 标签的 type 属性需要设置为 text/babel。

  

  

 

   详情参见文章淘宝npm镜像使用方法 .

  

   

   接来下在浏览器中打开 http://localhost:3000/ ,结果如下图所示:

  

  

 

   

  常见问题:

  

 

   

 

 

(3)React元素渲染

   

 

   

 

  

 

   

 

   

 

   

 

 

   

 

(4)JSX

  简介详解浅谈JSX---百科.

由于 JSX 就是 JavaScript,一些标识符像 classfor 不建议作为 XML 属性名。作为替代,React DOM 使用 className 和 htmlFor 来做对应的属性。

  

 

   

 

   

 

   

 

  

   

 

  

   

 

   

   

(5)React组件

注意;
  1、原生 HTML 元素名以小写字母开头,而自定义的 React 类名以大写字母开头,比如 HelloMessage 不能写成 helloMessage。
  2、需要注意组件类只能包含一个顶层标签,否则也会报错。
  3、在添加属性时, class 属性需要写成 className ,for 属性需要写成 htmlFor ,这是因为 class 和 for 是 JavaScript 的保留字。

  

 

   

 

   

 

   ReactDOM.render :

  

 

   

 

   

 

 

(6)React State(状态)

  

 

   

 

   componentDidMount() 挂载与 componentWillUnmount()写在---被称作生命周期钩子。

 

 

(7)React props

  

 

   

 

   案例如下:

  

 

   

 

   

 

   

 

   

 

   

 

   验证如下:

  

   

译为:警告:道具类型失败:提供给“演示”的类型为“字符串”的道具“标题”无效,预期为“数字”。

  更多验证器说明如下:

MyComponent.propTypes = {
    // 可以声明 prop 为指定的 JS 基本数据类型,默认情况,这些数据是可选的
   optionalArray: React.PropTypes.array,
    optionalBool: React.PropTypes.bool,
    optionalFunc: React.PropTypes.func,
    optionalNumber: React.PropTypes.number,
    optionalObject: React.PropTypes.object,
    optionalString: React.PropTypes.string,
 
    // 可以被渲染的对象 numbers, strings, elements 或 array
    optionalNode: React.PropTypes.node,
 
    //  React 元素
    optionalElement: React.PropTypes.element,
 
    // 用 JS 的 instanceof 操作符声明 prop 为类的实例。
    optionalMessage: React.PropTypes.instanceOf(Message),
 
    // 用 enum 来限制 prop 只接受指定的值。
    optionalEnum: React.PropTypes.oneOf(['News', 'Photos']),
 
    // 可以是多个对象类型中的一个
    optionalUnion: React.PropTypes.oneOfType([
      React.PropTypes.string,
      React.PropTypes.number,
      React.PropTypes.instanceOf(Message)
    ]),
 
    // 指定类型组成的数组
    optionalArrayOf: React.PropTypes.arrayOf(React.PropTypes.number),
 
    // 指定类型的属性构成的对象
    optionalObjectOf: React.PropTypes.objectOf(React.PropTypes.number),
 
    // 特定 shape 参数的对象
    optionalObjectWithShape: React.PropTypes.shape({
      color: React.PropTypes.string,
      fontSize: React.PropTypes.number
    }),
 
    // 任意类型加上 `isRequired` 来使 prop 不可空。
    requiredFunc: React.PropTypes.func.isRequired,
 
    // 不可空的任意类型
    requiredAny: React.PropTypes.any.isRequired,
 
    // 自定义验证器。如果验证失败需要返回一个 Error 对象。不要直接使用 `console.warn` 或抛异常,因为这样 `oneOfType` 会失效。
    customProp: function(props, propName, componentName) {
      if (!/matchme/.test(props[propName])) {
        return new Error('Validation failed!');
      }
    }
  }
}

  

  

(8)React事件处理

  

 

   

 

   

 

   

 

 

(9)React条件渲染

  

 

   

 

   

 

   

 

   

 

  我们可以将以上实例重构成一个组件,组件接收数组参数,每个列表元素分配一个 key,不然会出现警告 a key should be provided for list items,意思就是需要包含 key:

  

 

   

 

   

 

   

 

 

   

 

(10)React组件API

  

 

   

 

   

 

   

 

   

 

   

 

   注意:判断组件挂载状态

  

 

 

 

(11)组件生命周期

  

 

 

(12)

 

 

 

 

 

.

posted @ 2020-02-21 15:24  剑仙6  阅读(105)  评论(0)    收藏  举报
欢迎访问个人网站www.qingchun.在线