Recherche…


Introduction

// Remplacez les valeurs de la base de feu par les valeurs de votre application api importez la base de données depuis 'firebase';

componentWillMount () {firebase.initializeApp ({apiKey: "yourAPIKey", authDomain: "authDomainNAme", databaseURL: "yourDomainBaseURL", ID du projet: "yourProjectID", storageBucket: "storageBUcketValue", messagingSenderId: "senderIdValue"}); firebase.auth (). signInWithEmailAndPassword (email, mot de passe) .then (this.onLoginSuccess)})}

React Native - ListView avec Firebase

C'est ce que je fais lorsque je travaille avec Firebase et que je veux utiliser ListView.

Utilisez un composant parent pour récupérer les données de Firebase (Posts.js):

Posts.js

import PostsList from './PostsList';

class Posts extends Component{
    constructor(props) {
        super(props);
        this.state = {
            posts: []
        }
    }
    
    componentWillMount() {
        firebase.database().ref('Posts/').on('value', function(data) {
            this.setState({ posts: data.val() });
        });
    }

    render() {
        return <PostsList posts={this.state.posts}/>
    }
}

PostsList.js

class PostsList extends Component {
    constructor(props) {
        super(props);
        this.state = {
            dataSource: new ListView.DataSource({
                rowHasChanged: (row1, row2) => row1 !== row2
            }),
        }
    }

    getDataSource(posts: Array<any>): ListView.DataSource {
        if(!posts) return;
        return this.state.dataSource.cloneWithRows(posts);
    }

    componentDidMount() {
        this.setState({dataSource: this.getDataSource(this.props.posts)});
    }

    componentWillReceiveProps(props) {
        this.setState({dataSource: this.getDataSource(props.posts)});
    }

    renderRow = (post) => {
        return (
            <View>
                <Text>{post.title}</Text>
                <Text>{post.content}</Text>
            </View>
        );
    }

    render() {
        return(
            <ListView
                dataSource={this.state.dataSource}
                renderRow={this.renderRow}
                enableEmptySections={true}
            />
        );
    }
}

Je tiens à souligner que dans Posts.js , je Posts.js pas de firebase car il vous suffit de l'importer une fois, dans le composant principal de votre projet (où se trouve le navigateur) et de l'utiliser n'importe où.

C'est la solution que quelqu'un a suggérée dans une question que j'ai posée quand je me débattais avec ListView. Je pensais que ce serait bien de le partager.

Source: [ http://stackoverflow.com/questions/38414289/react-native-listview-not-rendering-data-from-firebase][1]

Authentification dans React Native avec Firebase

Remplacez les valeurs de la base de feu par les valeurs de votre application api:

import firebase from 'firebase';
componentWillMount() {
firebase.initializeApp({
  apiKey: "yourAPIKey",
  authDomain: "authDomainNAme",
  databaseURL: "yourDomainBaseURL",
  projectId: "yourProjectID",
  storageBucket: "storageBUcketValue",
  messagingSenderId: "senderIdValue"
});
    firebase.auth().signInWithEmailAndPassword(email, password)
  .then(this.onLoginSuccess)
  .catch(() => {
    firebase.auth().createUserWithEmailAndPassword(email, password)
      .then(this.onLoginSuccess)
      .catch(this.onLoginFail)
  })
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow