[React Native] Complete the Notes view
2016-08-05 04:43
211 查看
In this final React Native lesson of the series we will finalize the Notes view component and squash a few bugs in the code.
import firebase from 'firebase'; import React from 'react'; import { View, StyleSheet, Text, ListView, TextInput, TouchableHighlight } from 'react-native'; import Badge from './Badge'; import Divdir from './Helpers/divdir'; var styles = StyleSheet.create({ container: { flex: 1, flexDirection: 'column' }, buttonText: { fontSize: 18, color: 'white' }, button: { height: 60, backgroundColor: '#48BBEC', flex: 3, alignItems: 'center', justifyContent: 'center' }, searchInput: { height: 60, padding: 10, fontSize: 18, color: '#111', flex: 10 }, rowContainer: { padding: 10 }, footerContainer: { backgroundColor: '#E3E3E3', alignItems: 'center', flexDirection: 'row' } }); // In the video there are a couple errors, fixed them so it would build. class Notes extends React.Component{ constructor(props){ super(props); this.ds = new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2}); this.notes = []; this.state = { note: '', dataSource: null, }; // Initialize Firebase var config = { apiKey: "AIzaSyAs8HBqV2X6VIOE5MnDwENz1nRffNkUbiU", authDomain: "github-saver-9a338.firebaseapp.com", databaseURL: "https://github-saver-9a338.firebaseio.com", storageBucket: "github-saver-9a338.appspot.com", }; firebase.initializeApp(config); } componentDidMount(){ firebase.database().ref('notes/').on('child_added', (data)=>{ this.notes.push(data.val()); }) } handleChange(e){ this.setState({ note: e.nativeEvent.text }) } handleSubmit(){ let note = this.state.note; firebase.database().ref('notes/').push({ note, timestamp: +new Date() }) this.setState({ note: '' }) } render(){ var notesHtml = this.notes && this.notes.map((note, index)=>{ return ( <View> <Text key={index}>{note.note}</Text> <Divdir /> </View> ); }); return ( <View style={styles.container}> <Badge userInfo={this.props.userInfo}/> <View> {notesHtml} </View> <View style={styles.footerContainer}> <TextInput style={styles.searchInput} value={this.state.note} onChange={this.handleChange.bind(this)} placeholder="New Note" /> <TouchableHighlight style={styles.button} onPress={this.handleSubmit.bind(this)} underlayColor="#88D4F5"> <Text style={styles.buttonText}>Submit</Text> </TouchableHighlight> </View> </View> ) } }; Notes.propTypes = { userInfo: React.PropTypes.object.isRequired }; module.exports = Notes;
相关文章推荐
- [React Native] Use the SafeAreaView Component in React Native for iPhone X Compatibility
- The power of variable names -- Code complete reading notes(11)
- The pseudocode programming process--Code complete reading notes(9)
- The software-quanlity landscape -- Code complete reading notes
- [React Native] Using the WebView component
- Fundamental data type -- Code complete reading notes(12)
- Metaphors for a richer understanding of software development -- Code complete reading notes(2)
- The Python Programming Language Notes
- Look at the logic host by OO or SP from Maintaince View
- The Java Programming Language Notes
- General issues in using variables -- Code complete reading notes(10)
- Defensive programming -- Code complete reading notes(8)
- Key construction decisions--Code complete reading notes(4)
- Cutting Edge The ASP.NET View State
- Statements -- Code complete reading notes
- Measure twice,cut once:upstream prerequisites--Code complete reading notes(3)
- 关于 "Canot access the ClassView information file" 的真正原因及解决办法。
- The C# Programming Language Notes
- The linux view problem resolved!
- Design in construction --Code complete reading notes(5)