React Native中的属性与变量[二]

前端之家收集整理的这篇文章主要介绍了React Native中的属性与变量[二]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上一篇我们安装了React Native以及看了一下HelloWorld,那么这一篇我们来看一下属性以及变量


属性

当然,学习还是跟着demo学习,首先来第一个demo

  1. import React,{ Component } from 'react';
  2. import { AppRegistry,Image } from 'react-native';
  3.  
  4. class Bananas extends Component {
  5. render() {
  6. let pic = {
  7. uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
  8. };
  9. return (
  10. <Image source={pic} style={{width: 193,height: 110}} />
  11. );
  12. }
  13. }
  14.  
  15. AppRegistry.registerComponent('Bananas',() => Bananas);

这里面出现来一个数据类型 let

这个是ES中的语法,跟这个相关的是另一个var


let只在当前代码块中生效

var出了当前的代码块也能生效

试验一下

  1. export default class HelloWorlds extends Component {
  2. render() {
  3. let pic = {
  4. uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
  5. };
  6. return (
  7. // 尝试把`flexDirection`改为`column`看看
  8. <View style={{flex: 1,flexDirection: 'column',justifyContent:'center'}}>
  9. <Text>{str2}</Text>
  10. <Image source={pic} style={{width: 193,height: 110}} />
  11. </View>
  12. );
  13. }
  14. }
  15.  
  16. {
  17. let str1 = "1"
  18. var str2 = "2"
  19.  
  20. }

运行效果

改成<Text>{str1}</>



这是内部的属性,那么外部传入的属性呢?

Props(属性


例子:

  1. import React,Text,View } from 'react-native';
  2.  
  3. class Greeting extends Component {
  4. render() {
  5. return (
  6. <Text>Hello {this.props.name}!</Text>
  7. );
  8. }
  9. }
  10.  
  11. class LotsOfGreetings extends Component {
  12. render() {
  13. return (
  14. <View style={{alignItems: 'center'}}>
  15. <Greeting name='Rexxar' />
  16. <Greeting name='Jaina' />
  17. <Greeting name='Valeera' />
  18. </View>
  19. );
  20. }
  21. }
  22.  
  23. AppRegistry.registerComponent('LotsOfGreetings',() => LotsOfGreetings);

可以理解为,每一个class都有一个props用来存储任意变量,并且不用事先定义好,的确是很神奇的写法

状态

State(状态)

直接上demo

  1. import React,{ Component } from 'react';
  2. import {
  3. AppRegistry,StyleSheet,View
  4. } from 'react-native';
  5.  
  6. function functionName() {
  7.  
  8. }
  9. export default class HelloWorld extends Component {
  10. render() {
  11. return (
  12. <View style={{flex:1,justifyContent:'center',alignItems: 'center'}}>
  13. <Blink text='I love to blink' />
  14. <Blink text='Yes blinking is so great' />
  15. <Blink text='Why did they ever take this out of HTML' />
  16. <Blink text='Look at me look at me look at me' />
  17. </View>
  18. );
  19. }
  20. }
  21.  
  22.  
  23. class Blink extends Component {
  24. constructor(props) {
  25. super(props);
  26. this.state = { showText: true };
  27.  
  28. // 每1000毫秒对showText状态做一次取反操作
  29. setInterval(() => {
  30. this.setState(prevIoUsState => {
  31. return { showText: !prevIoUsState.showText };
  32. });
  33. },1000);
  34. }
  35.  
  36. render() {
  37. // 根据当前showText的值决定是否显示text内容
  38. let display = this.state.showText ? this.props.text : ' ';
  39. return (
  40. <Text>{display}</Text>
  41. );
  42. }
  43. }
  44.  
  45. const styles = StyleSheet.create({
  46. container: {
  47. flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#F5FCFF',},welcome: {
  48. fontSize: 20,textAlign: 'center',margin: 10,instructions: {
  49. textAlign: 'center',color: '#333333',marginBottom: 5,});
  50.  
  51. AppRegistry.registerComponent('HelloWorld',() => HelloWorld);
这样的效果就是,显示文字每秒进行闪烁效果



总结一下

props: 组件中父级向子级传递数据的方式

state:在不操纵DOM树的情况下 刷新页面的一种方式(通过操作state实现数据的时时变化)

大部分组件的工作应该是从props里取数据并渲染出来.但是,有时需要对用户输入,服务器请求或者时间变化等作出响应,这时才需要state.

换句话来说 props就是初始值 需要改变只能操作 state

猜你在找的React相关文章