一、介绍

一个组件有两种属性控制:props(控制静态数据)state(控制动态数据)

props用于需要静态数据(它在父组件中指定,而且一经指定,在被指定的组件的生命周期中则不再改变)。

state用于需要改变的数据。

一般来在constructor中初始化state,然后在需要修改时调用setState方法。

二、举例

假如我们需要制作一段不停闪烁的文字。

分析:

1.文字内容本身在组件创建时就已经指定好了,所以文字内容应该是一个prop

2.而文字的显示或隐藏的状态则是随着时间变化的,因此这一状态应该写到state中。

代码:

1.自定义组件 Blink ,文字显示内容用props指定

<Blink text='I love to blink' />

2.自定义组件 Blink ,constructor中初始化state显示文字,在setInterval中每1000毫秒让state取反

class Blink extends  Component{constructor(props){super(props);this.state = {showtext:true};// 每1000毫秒对showText状态做一次取反操作setInterval( ()=> { this.setState({showtext:!this.state.showtext}); },500 );}render(){// 根据当前showText的值决定是否显示text内容let display = this.state.showtext?this.props.text:'';return(<Text>{display}</Text>)}
}

3.主入口

export default class myprojectname extends Component<Props>  {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>);}
}// 注意,这里用引号括起来的'myprojectname'必须和你init创建的项目名一致
AppRegistry.registerComponent('myprojectname', () => myprojectname);

4.效果

RN入门基础3:JSX动态布局之自定义属性state相关推荐

  1. 移动web开发入门—基础知识、自适应布局、调试

    之前没做过移动端web开发,最近接手的一个小项目是做微信公众号,需要考虑手机适配.UI给出的设计稿是一般是基于iphone手机做的(15年之后是基于ipone6),我们的UI是基于iphone6来做的 ...

  2. RN入门基础1:第一个RN项目-hello World

    1.新建工程,用webStorm创建一个react native项目 首先打开package.json, 因为webstorm会创建rn项目时会下载最新的react-native,所以运行程序到模拟器 ...

  3. CG插画入门教程之人体动态基础与面部画法分析

    CG插画入门教程之人体动态基础与面部画法分析第一章:人体动态的画法分析与技巧讲解视频地址:https://www.qingwk.com/course/detail/10 章节1:人体动态的画法分析与技 ...

  4. 安卓APP_ Fragment(1)—— Fragment概念、基础用法、动态变换、管理栈

    摘自:安卓APP_ Fragment(1)-- Fragment概念.基础用法.动态变换.管理栈 作者:丶PURSUING 发布时间: 2021-04-15 23:32:31 网址:https://b ...

  5. Android入门教程:ConstraintLayout约束布局

    原文首发自掘金芦苇APP团队,转载到自己小号上再发一遍~ 翻译By Leelion6.关于 ConstraintLayout 的文章其实已经不少了,不过看到这篇文章写的很有趣,以及在翻译的过程中,感受 ...

  6. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  7. java SE(一)——入门基础

    java入门基础 一.java语言概述 1.java背景知识 2.为什么用java?(java的特性) 4.java能做什么? 4.java技术体系 5.总结 二.java环境搭建 1jdk简介 2 ...

  8. Python培训入门基础知识学什么?

    Python培训基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python培训入门基础知识学什么呢?来看看下面小编 ...

  9. JSP WEB开发入门基础到高手进阶教程002

    JSP WEB开发入门基础到高手进阶教程 -------开发入门 JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript. ...

最新文章

  1. [JavaWeb基础] 007.Struts2的配置和简单使用
  2. 【转】Linux世界驰骋——文件系统和设备管理
  3. pyqt5从子目录加载qrc文件_PyQt5快速上手基础篇10-QSettings用法
  4. Yacc 与 Lex 快速入门(词法分析和语法分析)
  5. nginx源码分析—内存池结构ngx_pool_t及内存管理(精辟)
  6. 如果城里人拿100万买你的农村宅基地,你愿意吗?
  7. int main() 与 void main()
  8. dz论坛服务器技术支持,服务器更换 升级 dz论坛首页 dz其他页面打开为空白解决方法...
  9. php excel header,【IT专家】PHP生成excel,方法一-header生成
  10. java数据库配置_java--数据库(文件配置连接,自定义连接池)
  11. servlet技术是否过时
  12. 软启动器说明书_软启动器怎么接线?一张电路图一张实物图供大家参考
  13. Core Animation 文档翻译 (第二篇)—核心动画基础要素
  14. android屏幕投影到pc,安卓手机怎么把屏幕投影到电脑上
  15. 动画七、动画的PropertyValuesHolder与Keyframe
  16. 教你用Python做个打飞机小游戏超详细教程
  17. 基于深度强化学习的电子商务平台动态定价
  18. 如何把汉字转成五笔与拼音(首字母或全部字母)
  19. LeetCode.黑白方格画
  20. CToolBar的使用总结

热门文章

  1. 【汇智学堂】-div+css布局十二(商品列表图文展示)
  2. win7 蓝牙4.0 ble驱动_恩智浦发布行业领先的2x2 Wi-Fi 6 +蓝牙解决方案,彻底改变游戏、音频、工业和物联网市场...
  3. 智能运维 | 我们不一样!告诉你百度云如何做智能流量异常检测
  4. 正则系列2: re.search用法
  5. 中国AI崛起,独角兽深兰科技亮相3E北京国际人工智能大会
  6. 2018_9_8 模拟题
  7. AVR单片机开发6——AVR单片机串口Proteus调试注意事项
  8. 台式计算机连接,台式电脑连接网络步骤
  9. 神经网络(4)---神经网络是如何帮助我们学习复杂的nonlinear hypotheses
  10. 关于安卓 dp与px的理解