React Native - State

2016-08-18  本文已影响111人  小如99

一个组件被两种数据控制:props和state。props由其父类设置,并且在这个组件的生命周期内,他们都是被锁定的。对于要改变的数据,我们必须要使用state。

一般情况下,你应该在构造函数中初始化state,然后当你想要改变它的时候,调用setState。

举例来说,我们想要做一个text,这个text每时每刻都在闪烁,在创建闪烁组件的时候把text设置一次,所以text本身就是一个prop,“text目前是开启的还是关闭的”随着时间而改变,这个数据应保存在state中。

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

class Blink extends Component {
    constructor(props) {
        super(props);
        this.state = {showText: true};
        
        // Toggle the state every second
        setInterval(() => {
            this.setState({ showText: !this.state.showText });
        }, 1000);
    }
    
    render() {
        let display = this.state.showText ? this.props.text : ' ';
        return (
                <Text>{display}</Text>
                );
    }
}

class BlinkApp extends Component {
    render() {
        return (
                <View>
                <Blink text='I love to blink' />
                <Blink text='Yes blinking is so great' />
                <Blink text='Why did they ever take this out of HTML' />
                <Blink text='Look at me look at me look at me' />
                </View>
                );
    }
}

AppRegistry.registerComponent('BlinkApp', () => BlinkApp);

在实际应用中,你可能不会用一个计时器来设置state。你也许会在你从服务器获取到数据,或从用户输入获取数据时设置state;您还可以使用像Redux的state容器来控制你的数据流,在这种情况下,你可以使用Redux来修改你的state,而不是直接调用setState。

State的作用跟在React中一样,想要掌握更多关于state的详细信息,你可以看看React.Component API

在这一点上,你可能会恼火,我们的大多数例子使用至今都是默认的无聊的黑色text。为了让界面变得更漂亮,你将不得不学习Style。

上一篇 下一篇

猜你喜欢

热点阅读