反応ネイティブでは、フォーム(単純なフィールド-名前、アドレス)があり、ユーザータイプを選択するためのドロップダウンを追加したいと思います。ドロップダウンリストをfirebaseから動的にロードしたいと思います。出来ますか ?助けに感謝します。
更新しました:
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Picker,
} from 'react-native';
export default class Testpicker extends Component {
constructor(props) {
super(props);
types = [{userType: 'admin', userName: 'Admin User'}, {userType: 'employee', userName: 'Employee User'}, {userType: 'dev', userName: 'Developer User'}];
this.setState({userTypes: types});
}
loadUserTypes() {
return this.state.userTypes.map(user => (
<Picker.Item label={user.userName} value={user.userType} />
))
}
render() {
return (
<View>
<Picker
selectedValue={this.state.selectedUserType}
onValueChange={(itemValue, itemIndex) =>
this.setState({selectedUserType: itemValue})}>
// Dynamically loads Picker.Values from this.state.userTypes.
{this.loadUserTypes()}
</Picker>
</View>
)
}
}
AppRegistry.registerComponent('Testpicker', () => Testpicker);
現在、「nullはオブジェクトではありません( 'this.state.selectedUserType'を評価しています)」というエラーメッセージが表示されます。私は何が間違っているのですか?
もちろん、Firebaseからのデータがそのようなものだと想像してみてください。
_types = [{userType: 'admin', userName: 'Admin User'}, {userType: 'employee', userName: 'Employee User'}, {userType: 'dev', userName: 'Developer User'}]
_
このデータを状態内にthis.setState({userTypes: types});
として保存します
このようにクラスに関数loadUserTypes
を作成します。
_...
import {Picker} from 'react-native;
...
...
// Inside your class.
constructor(props) {
super(props);
// Use this.setState({userTypes: data}) when data comes from
// firebase.
this.state = {
userTypes: [{userType: 'admin', userName: 'Admin User'}, {userType: 'employee', userName: 'Employee User'}, {userType: 'dev', userName: 'Developer User'}],
selectedUserType: ''
}
}
loadUserTypes() {
return this.state.userTypes.map(user => (
<Picker.Item label={user.userName} value={user.userType} />
))
}
// Then in your render.
render() {
return (
<View>
<Picker
selectedValue={this.state.selectedUserType}
onValueChange={(itemValue, itemIndex) =>
this.setState({selectedUserType: itemValue})}>
// Dynamically loads Picker.Values from this.state.userTypes.
{this.loadUserTypes()}
</Picker>
</View>
)
}
_
_.map
_関数は、userTypes
配列の各要素を返されるRNコンポーネントに変換し、レンダリングできるRNコンポーネントの配列を作成します。
_<Picker />
_のドキュメントは、 ここ から入手できます。
それが役に立てば幸い!