In this final React Native lesson of the series we will finalize the Notes view component and squash a few bugs in the code.

  1. import firebase from 'firebase';
  2. import React from 'react';
  3. import {
  4. View,
  5. StyleSheet,
  6. Text,
  7. ListView,
  8. TextInput,
  9. TouchableHighlight
  10. } from 'react-native';
  11. import Badge from './Badge';
  12. import Divdir from './Helpers/divdir';
  13.  
  14. var styles = StyleSheet.create({
  15. container: {
  16. flex: ,
  17. flexDirection: 'column'
  18. },
  19. buttonText: {
  20. fontSize: ,
  21. color: 'white'
  22. },
  23. button: {
  24. height: ,
  25. backgroundColor: '#48BBEC',
  26. flex: ,
  27. alignItems: 'center',
  28. justifyContent: 'center'
  29. },
  30. searchInput: {
  31. height: ,
  32. padding: ,
  33. fontSize: ,
  34. color: '#111',
  35. flex:
  36. },
  37. rowContainer: {
  38. padding:
  39. },
  40. footerContainer: {
  41. backgroundColor: '#E3E3E3',
  42. alignItems: 'center',
  43. flexDirection: 'row'
  44. }
  45. });
  46.  
  47. // In the video there are a couple errors, fixed them so it would build.
  48. class Notes extends React.Component{
  49. constructor(props){
  50. super(props);
  51. this.ds = new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2});
  52. this.notes = [];
  53. this.state = {
  54. note: '',
  55. dataSource: null,
  56. };
  57. // Initialize Firebase
  58. var config = {
  59. apiKey: "AIzaSyAs8HBqV2X6VIOE5MnDwENz1nRffNkUbiU",
  60. authDomain: "github-saver-9a338.firebaseapp.com",
  61. databaseURL: "https://github-saver-9a338.firebaseio.com",
  62. storageBucket: "github-saver-9a338.appspot.com",
  63. };
  64. firebase.initializeApp(config);
  65. }
  66. componentDidMount(){
  67. firebase.database().ref('notes/').on('child_added', (data)=>{
  68. this.notes.push(data.val());
  69. })
  70. }
  71. handleChange(e){
  72. this.setState({
  73. note: e.nativeEvent.text
  74. })
  75. }
  76. handleSubmit(){
  77. let note = this.state.note;
  78. firebase.database().ref('notes/').push({
  79. note,
  80. timestamp: +new Date()
  81. })
  82. this.setState({
  83. note: ''
  84. })
  85. }
  86. render(){
  87.  
  88. var notesHtml = this.notes && this.notes.map((note, index)=>{
  89. return (
  90. <View>
  91. <Text key={index}>{note.note}</Text>
  92. <Divdir />
  93. </View>
  94. );
  95. });
  96.  
  97. return (
  98. <View style={styles.container}>
  99. <Badge userInfo={this.props.userInfo}/>
  100. <View>
  101. {notesHtml}
  102. </View>
  103. <View style={styles.footerContainer}>
  104. <TextInput
  105. style={styles.searchInput}
  106. value={this.state.note}
  107. onChange={this.handleChange.bind(this)}
  108. placeholder="New Note" />
  109. <TouchableHighlight
  110. style={styles.button}
  111. onPress={this.handleSubmit.bind(this)}
  112. underlayColor="#88D4F5">
  113. <Text style={styles.buttonText}>Submit</Text>
  114. </TouchableHighlight>
  115. </View>
  116. </View>
  117. )
  118. }
  119. };
  120.  
  121. Notes.propTypes = {
  122. userInfo: React.PropTypes.object.isRequired
  123. };
  124.  
  125. module.exports = Notes;

[React Native] Complete the Notes view的更多相关文章

  1. React Native学习(二)之View

    React Native组件解析(二)之View 0.JSX React的核心机制之一就是虚拟DOM:可以在内存中创建的虚拟DOM元素.React利用虚拟DOM来减少对实际DOM的操作从而提升性能. ...

  2. React Native学习-measure测量view的宽高值

    measure()测量是根据view标签中的ref属性,使用方法如下: measureWatermarkerImage(){ this.refs.watermarkerImage.measure((a ...

  3. React Native实践之携程Moles框架

    编者:本文来自携程框架研发部高级经理魏晓军在第二期[携程技术微分享]上的分享,以下为整理后的文字实录.视频回放可点击这里.关注携程技术中心微信公号ctriptech,可获知更多微分享课程信息. 因为支 ...

  4. 【转】【React Native开发】

    [React Native开发]React Native控件之ListView组件讲解以及最齐全实例(19)  [React Native开发]React Native控件之Touchable*系列组 ...

  5. React Native专题

    转载注明出处:地址:http://www.lcode.org本文出自:[江清清的技术专栏]本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶 ...

  6. React Native之携程Moles框架

    因为支持用javascript开发原生应用,React Native一推出就受到不少公司热捧,各家都跃跃欲试.但有一个痛点是,在移动端,我们是否有必要开发多套程序:iOS.Android和H5?本次将 ...

  7. React Native专题-江清清

    本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶相关讲解. 刚创建的React Native交流8群:533435865  欢迎各位大牛, ...

  8. React Native 常用插件案例

    (二).基础入门: 1.React Native For Android环境配置以及第一个实例 2.React Native开发IDE安装及配置 3.React Native应用设备运行(Runnin ...

  9. React Native简史

    诞生 React Native 诞生于 2013 年的 Facebook 内部黑客马拉松(hackathon): In the essence of Facebook’s hacker culture ...

随机推荐

  1. 关于C#控制台传递参数和接收参数

    前言: 写了这么久程序,今天才知道的一个基础知识点,就是程序入口 static void Main(string[] args) 里的args参数是什么意思 ?惭愧... 需求: 点击一个button ...

  2. unity3d游戏物体跟着鼠标方向移动

    效果:当点击鼠标左键时,游戏对象会朝鼠标点击的方向移动,类似魔兽争霸一样. 思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动. 如果你看到这的 ...

  3. WindowsPhone8SDK重装后设计器加载异常的处理办法

    Close all running instances of Visual Studio 2012 start cmd.exe (as admin/elevated) cd /d %windir%\i ...

  4. 各种好用的工具之一 ---- PNGGauntlet

    1.PNGGauntlet实际上是一个图形前端,压缩图像的过程中使用的是PNGOUT, OptiPNG, 和DeflOpt这三款软件. 软件官网:http://pnggauntlet.com/ 可自行 ...

  5. Vim cscope

    /********************************************************************** * Vim cscope * 说明: * 之前使用Vim ...

  6. eclipse中相同代码的高亮显示

    在eclipse中 当选中一串字符时,让其他相同字符代码都高亮显示,操作如下: windows-> preferences-> java-> Editor-> Mark Occ ...

  7. Ext入门学习系列(二)弹出窗体

    第二章 弹出窗体 上节学习了Ext的环境搭建和最基本的一个操作——弹出对话框,作为一个引子,本节讲述如何弹出一个新窗体,从实例讲解Ext的基本运行原理. 一.Ext的窗体长什么样? 先来看看几个效果, ...

  8. 为枚举类型添加说明 zt

    enum Orientation { [DescriptionAttribute("东")] East, [DescriptionAttribute("南")] ...

  9. [原]Links

    [Date]2014-04-19 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Content]: 1.Android 1. ...

  10. Deep learning:三十四(用NN实现数据的降维)

    数据降维的重要性就不必说了,而用NN(神经网络)来对数据进行大量的降维是从2006开始的,这起源于2006年science上的一篇文章:reducing the dimensionality of d ...