react-native
認証のためのFirebaseとの統合
サーチ…
前書き
// firebaseの値をappのapiの値に置き換えます。firebaseを 'firebase'からインポートします。
あなたのアプリケーションIDは、あなたのアプリケーションIDである必要はありません。コンポーネントの名前は、あなたのIDである必要はありません。 firebase.auth()。signInWithEmailAndPassword(電子メール、パスワード).then(this.onLoginSuccess)}}}
React Native - リストビューとFirebase
これは私がFirebaseを使って作業しているときに行うもので、ListViewを使用したいのです。
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}
/>
);
}
}
私はであることを指摘したいPosts.js
、私はインポートないよfirebase
あなただけ(あなたがナビゲーターを持っている)プロジェクトの主要コンポーネントで、一度それをインポートして、どこでもそれを使用する必要があるため。
これは、誰かが私がListViewに苦労していたときに尋ねた質問で提案した解決策です。私はそれを共有することがうれしいと思った。
出典:[ http://stackoverflow.com/questions/38414289/react-native-listview-not-rendering-data-from-firebase] [1 ]
Firebaseを使用してネイティブ・リアクションでの認証
firebaseの値を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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow