从零开始RNReact NativeReact Native的魔盒

ReactNative之属性Props、State(四)

2017-05-05  本文已影响1277人  袁峥

前言

眼看很多公司都开始尝试使用ReactNative,达到跨平台开发,最近也写了很多文章,希望让更多想了解的同学快速上手ReactNative.

如果喜欢我的文章,可以关注我微博:袁峥Seemygo

ReactNative之组件属性(Props、State)

Props(属性)

<Room 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="小码哥" />
    );
  }
}

const styles = StyleSheet.create({
    viewStyle:{
        flex:1,
        justifyContent:'center',
        alignItems:'center',

    },
    textStyle:{
        marginTop:20
    }

});

State

this.state = {
            num:1,
        };
this.setState({
            num : number
        })
// 自定义房间组件
class Room extends Component {

    timeUpdate() {
        var number = this.state.num;

        number++;

        this.setState({
            num : number
        })

    }

    // 构造方法
    constructor(props){
        super(props);

        // 定义state属性
        this.state = {
            num:1,
        };

        console.log('初始化对象');

        // 创建定时器 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>

        );
    }

}

// 主组件

export default class ReactDemo extends Component {
  render() {
    return (
        <Room name="小码哥" />
    );
  }
}

const styles = StyleSheet.create({
    viewStyle:{
        flex:1,
        justifyContent:'center',
        alignItems:'center',

    },
    textStyle:{
        marginTop:20
    }

});
上一篇下一篇

猜你喜欢

热点阅读