前一小节已经介绍过props,其中props是不可变的,在父组件中,就已经被指定了,而state你可以理解为可以变的。
假如我们需要制作一段不停闪烁的文字。文字内容本身在组件创建时就已经指定好了,所以文字内容应该是一个prop。而文字的显示或隐藏的状态(快速的显隐切换就产生了闪烁的效果)则是随着时间变化的,因此这一状态应该写到state中。
代码如下,效果就是闪烁的效果了,就不贴图了。
import React from 'react'; import { StyleSheet, Text, View, Image } from 'react-native'; class BlinkText extends React.Component { constructor(props) { super(props); this.state = { showText: true }; // 每1000毫秒对showText状态做一次取反操作 setInterval(() => { this.setState(previousState => { return { showText: !previousState.showText }; }); }, 1000); } render() { // 根据当前showText的值决定是否显示text内容 let display = this.state.showText ? this.props.text : ' '; return ( <Text>{display}</Text> ); } } export default class App extends React.Component { render() { let pic = { uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' }; return ( <View style={styles.container}> <BlinkText text="fashici"/> <BlinkText text="my friend"/> <Text>Shake your phone to open the developer menu.</Text> <Image source={pic} style={{width: 193, height: 110}} /> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, });