React Native学习总结第二天

1.0 面向组件开发

  • class/function都可以是“积木”(组件)

    class GoodMorning extends Component {
        render() {
             return (
                  <View style={styles.container}>
                     <Text>Good morning</Text>
                    </View>
                );
            }
        }
        const GoodEvening = () => {
        return <Text> GoodEvening </Text>
        }
        
        class App extends Component {
            render() {
             return (
                <View style={styles.container}>
                    <GoodMorning    />
                    <GoodEvening />
                </View>
             )
         }
        }
    
  • 使用属性props定制“积木”(组件)

  • 使defaultProps默认值和propTypes类型约束

      class Demo extends Component {
          static defaultProps = {
          name: ‘somebody’,   // 赋予默认值”somebody”
          }
      static propTypes = {
          name:  React.propTypes.string,   // 约定需要的类型 (为字符串)
      }
      render() {
          …….
          }
      }
    
  • defaultProps默认值和propTypes类型约束

    defaultProps和propTypes写法类似(都为静态成员属性),容易 混淆
    建议按英文字面意思来记忆,default 默认值, types 类型(约    束)
    
    propTypes类型约束只在开发阶段有效,发布时会被自动移除。
    编码习惯,根据需要和爱好自由取舍
    
    

2.0 变量作用域(重点)

  • 函数内的局部变量,只能函数内读写,函数运行完后销毁(闭包除外)

  • class内的成员变量,在单个class的实例内读写,实例销毁时一并销毁,使用时不要忘记this.

  • class内的静态成员变量,在所有class的实例内共享,不会自动销毁,其他模块可通过此class访问(类public)

  • class外的变量,在所有class的实例内共享(公有),不会自动销毁,除非明确export,否则其他模块不可访问(类private

  • global全局变量,任何地方可读写(类浏览器的window),不会自动销毁

2.1 class内的成员变量写法

  • 写法1(推荐)比较直观

    class Demo extends Component {
    xxx = 1;    // 注意没有声明符号var或者let
    render() {
    …….
        }
    }
    
    
  • 写法二

    class Demo extends Component {
    constructor(props) {
        super(props);  // 照抄即可,不可省略
        this.xxx = 1;    
    }
    render() {
    …….
        }
    }
    
    

3.0 动态列表与key

  • 根据多个数据(数组)动态生成多个组件一般使用map方法 注意箭头函 数的返回值(有{}则必须写return)


  • 循环生成的组件需要有唯一的key值区分(Virtual DOM),key属性放在循环的直接容器上,优先使用区分度高的属性(id、具体内容等),其次选择数组下标,只需在当前循环中唯一不重复


4.0 为什么VIRTUAL DOM需要key


正常情况下 这种情况需不要不需要key Dom都能解析成功 认为状态发生了变化,就会自动触发渲染界面。



这种不需要key Dom没法根据唯一标识符去判断需要当前的局部界面是否要进行刷新。所以说VIRTUAL DOM需要key 这样能判断局部的界面是否需要进行重新绘制,最大的节约性能.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 7,846评论 1 18
  • 深入JSX date:20170412笔记原文其实JSX是React.createElement(componen...
    gaoer1938阅读 12,472评论 2 35
  • 目前,react组件有三种写法,分别是es5的createClass写法,es6的class写法,以及statel...
    ZoomFunc阅读 5,803评论 0 1
  • 3. JSX JSX是对JavaScript语言的一个扩展语法, 用于生产React“元素”,建议在描述UI的时候...
    pixels阅读 7,915评论 0 24
  • TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Co...
    dequal阅读 1,423评论 0 0