ReactNative-Props,State,PropTypes(四)

Props与State可用于组件间传值

一.Props

  • 在父组件中指定,不可改变属性值,无提示
  • name即为props
    <Room name="小码哥" />
  • name的访问方式
    this.props.name
  • 示例代码:
    class Room extends Component {
        render() {
            return (
                <View style={styles.viewStyle}>
                     <Text sytle={styles.textStyle}>欢迎来到{this.props.name}直播间</Text>
                </View>
            );
        }
    }
    export default class ReactDemo extends Component {
      render() {
        return (
            <Room name="小码哥" />
        );
      }
    }

二.State

  • 在constructor方法中定义,可改变属性值,无提示
  • constructor中声明
    constructor(props){
        super(props);

        this.state = {
            listData:[],
            curPage:0
        }
    }
  • setState中修改
        this.setState({
            listData:listData
        })
  • 示例代码:
class Room extends Component {

    timeUpdate() {
        var number = this.state.num;
        number++;
        this.setState({
            num : number
        })
    }

    constructor(props){
        super(props);
        this.state = {
            num:1,
        };
        // 创建定时器 1秒 = 1000
        // 这里必须绑定,bind会生成了一个新的函数,并且由绑定者调用,否则this不明确
        setInterval(this.timeUpdate.bind(this),1000);
    }

    render() {
        return (
            <View style={styles.viewStyle}>
                <Text sytle={styles.textStyle}>欢迎来到{this.props.name}直播间</Text>
                <Text>观众数 {this.state.num}</Text>
            </View>
        );
    }
}

三.PropTypes

  • 在组件内定义,定义属性类型,有提示,有类型检查

3.1.声明属性

  • 引入React框架PropTypes,只能用于React框架的自定义组件,默认JS没有
import React, { Component,PropTypes } from 'react';
  • 必须用static声明,不在任何方法中, 在组件内定义
    static propTypes = {
        name:PropTypes.string,
        age:PropTypes.number
    }
  • static用来定义类方法或类属性

3.2.定义属性值

  • 定义属性默认值时必须用defaultProps
    //定义属性时设置初始值
    static defaultProps = {
        name:'xmg',
        age:20
    }

3.3.propTypes定义的类型

# 数组类型
PropTypes.array

# 布尔类型
PropTypes.bool

# 函数类型
PropTypes.func

# 数值类型
PropTypes.number

# 对象类型
PropTypes.object

# 字符串类型
PropTypes.string

# 规定prop为必传字段
PropTypes.func.isRequired

# prop可为任意类型
PropTypes.any.isRequired
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。