React Native

React Native - 03 - 状态

2018-01-31  本文已影响9人  wanqijian

控制组件的数据有两种类型:属性和状态。属性由父母设置,在组件的整个生命周期中都是固定的。对于将要改变的数据,我们必须使用状态。

一般来说,你应该在构造函数中初始化状态,然后当你想改变它时调用setState。

例如,我们假设我们想让文字一直闪烁。当闪烁组件被创建时,文本本身被设置一次,所以文本本身就是一个道具。 “文本是否打开或关闭”随着时间的推移而改变,所以应该保持状态。

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

class Blink extends Component {
    constructor(props) {
        super(props);
        this.state = {isShowingText: true};

        // 每秒修改状态
        setInterval(() => {
            this.setState(previousStatus => {
                return { isShowingText: !previousStatus.isShowingText };
            });
        }, 1000);
    }
    
    render() {
        let display = this.state.isShowingText ? this.props.text : '';
        return (
            <Text>{display}</Text>
        );
    }
}
export default class BlinkApp extends Component {
    render() {
        return (
            <View>
                <Blink text='这是测试文本1' />
                <Blink text='这是测试文本2 这是测试文本2' />
                <Blink text='这是测试文本3 这是测试文本3 这是测试文本3' />
            </View>
        );
    }
}
image.gif

在实际的应用程序中,您可能不会使用计时器来设置状态。当有新的数据从服务器到达时,或从用户输入时,您可能会设置状态。您也可以使用像Redux这样的状态容器来控制数据流。在这种情况下,您将使用Redux来修改您的状态,而不是直接调用setState。

当调用setState时,BlinkApp将重新渲染其组件。通过在定时器中调用setState,组件将在每次定时器打勾时重新呈现。

状态的工作方式与在React中的工作方式相同,因此有关处理状态的更多详细信息,可以查看React.Component API。

上一篇 下一篇

猜你喜欢

热点阅读