Zoeken…


Invoering

// Vervang firebase-waarden door uw app api-waarden import firebase uit 'firebase';

componentWillMount () {firebase.initializeApp ({apiKey: "yourAPIKey", authDomain: "authDomainNAme", databaseURL: "yourDomainBaseURL", projectId: "yourProjectID", storageBucket: "storageBUcketValue", messagingSenderIdal "; firebase.auth (). signInWithEmailAndPassword (e-mail, wachtwoord). dan (this.onLoginSuccess)})}

React Native - ListView met Firebase

Dit is wat ik doe als ik met Firebase werk en ik wil ListView gebruiken.

Gebruik een bovenliggend onderdeel om de gegevens op te halen uit 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}
            />
        );
    }
}

Ik wil erop wijzen dat in Posts.js , ik ben niet het importeren firebase omdat je alleen nodig om het te importeren, in het belangrijkste onderdeel van uw project (waar je de navigator) en gebruik het overal.

Dit is de oplossing die iemand suggereerde in een vraag die ik stelde toen ik worstelde met ListView. Ik dacht dat het leuk zou zijn om het te delen.

Bron: [ http://stackoverflow.com/questions/38414289/react-native-listview-not-rendering-data-from-firebase cialis cialis1]

Verificatie in reactie Native met Firebase

Vervang firebase-waarden door de waarden van uw app-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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow