zoukankan      html  css  js  c++  java
  • [React Native] Complete the Notes view

    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;
  • 相关阅读:
    CSS3阴影 box-shadow的使用和技巧总结
    css实现一行文字居中,多行文字左对齐
    让一个div里面的其它div或者标签内容居中
    巧用css内容生成
    Emmet-前端开发神器
    新手向:Vue 2.0 的建议学习顺序
    require() 源码解读
    Vue-webpack项目配置详解
    webpack---webpack构建vue多页面框架(一、工程布局)
    STS创建spring boot项目,pom.xml文件第一行报错
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5739790.html
Copyright © 2011-2022 走看看