を反応させます。誰も私はどのように反応するネイティブで複数の選択ドロップダウンを実装することを提案することができます。私はreact-native-multiple-selectからMultiSelect(https://github.com/toystars/react-native-multiple-select)を試しましたが、動作しません。私が実装したマルチ選択ドロップダウンでは、私がネイティブ反応する新しいですネイティブ
答えて
は、ネイティブコンポーネントを反応します。 ソースコードが添付されています。 リストチェック可能にする方法を示します。 これはあなたのソリューションの基礎になるかもしれません。 をご覧ください。
import React from 'react';
import {View, Text, StyleSheet, FlatList, TouchableHighlight} from 'react-native';
var thisObj;
export default class MultiSelect extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedItems: {}
};
}
onItemPressed(item) {
var oldSelectedItems = this.state.selectedItems;
var itemState = oldSelectedItems[item.key];
if(!itemState) {
oldSelectedItems[item.key] = true;
}
else {
var newState = itemState? false: true;
oldSelectedItems[item.key] = newState;
}
this.setState({
selectedItems: oldSelectedItems,
});
}
componentDidMount() {
thisObj = this;
}
getStyle(item) {
try {
console.log(thisObj.state.selectedItems[item.key]);
return thisObj.state.selectedItems[item.key]? styles.itemTextSelected : styles.itemText;
} catch(e) {
return styles.itemText;
}
}
render() {
return (
<View style={styles.rootView}>
<FlatList style={styles.list}
extraData={this.state}
data={this.props.data}
renderItem={({item}) =>
<TouchableHighlight onPress={this.onItemPressed.bind(this, item)} underlayColor='#f00'>
<Text style={this.getStyle(item)}>{item.key}</Text>
</TouchableHighlight>
}
/>
</View>
);
}
}
const styles = StyleSheet.create({
rootView : {
},
itemText: {
padding: 16,
color: "#fff"
},
itemTextSelected: {
padding: 16,
color: "#fff",
backgroundColor: '#f00'
},
list: {
}
});
これが実装複数選択ソースリストのソースコードである。この
<Multiselect data = { [{"key" : "item1"}, {"key" : "item2"}{"key" : "item3"}]
}\>
おかげ@Dmytro Marchukを通過してください、私はあなたのコードを試みたが、生成することができませんでしてきたこのリンクを行っています結果。あなたが他の選択肢を提案できるなら、私はとてもうれしいでしょう。 –
他のオプションはありますか? @Dmytrom –
私はマルチセレクションフラットリストを実装していますが、ドロップダウンは実装していません。あなたはソースコードが必要ですか? –
使い方
import React from 'react';
import {View, Text, StyleSheet, FlatList, TouchableHighlight, Dimensions} from 'react-native';
var thisObj;
var deviceHeight = Dimensions.get("window").height;
class MyListItem extends React.PureComponent {
render() {
return (
<View style={{flex: 1}}>
<TouchableHighlight onPress={this.props.onPress.bind(this)} underlayColor='#616161'>
<Text style={this.props.style}>{this.props.item.key}</Text>
</TouchableHighlight>
</View>
);
}
}
export default class MultiSelect extends React.Component {
constructor(props) {
super(props);
var selectedItemsObj = {};
if(this.props.selectedItems) {
var items = this.props.selectedItems.split(',');
items.forEach(function(item) {
selectedItemsObj[item] = true;
});
}
this.state = {
selectedItems: selectedItemsObj
};
}
onItemPressed(item) {
var oldSelectedItems = this.state.selectedItems;
var itemState = oldSelectedItems[item.key];
if(!itemState) {
oldSelectedItems[item.key] = true;
}
else {
var newState = itemState? false: true;
oldSelectedItems[item.key] = newState;
}
this.setState({
selectedItems: oldSelectedItems,
});
var arrayOfSelectedItems = [];
var joinedItems = Object.keys(oldSelectedItems);
joinedItems.forEach(function(key) {
if(oldSelectedItems[key])
arrayOfSelectedItems.push(key);
});
var selectedItem = null;
if(arrayOfSelectedItems.length > 0)
selectedItem = arrayOfSelectedItems.join();
this.props.onValueChange(selectedItem);
}
componentWillMount() {
thisObj = this;
}
getStyle(item) {
try {
console.log(thisObj.state.selectedItems[item.key]);
return thisObj.state.selectedItems[item.key]? styles.itemTextSelected : styles.itemText;
} catch(e) {
return styles.itemText;
}
}
_renderItem = ({item}) => {
return (<MyListItem style={this.getStyle(item)} onPress={this.onItemPressed.bind(this, item)} item={item} />);
}
render() {
return (
<View style={styles.rootView}>
<FlatList style={styles.list}
initialNumToRender={10}
extraData={this.state}
data={this.props.data}
renderItem={this._renderItem.bind(this)}
/>
</View>
);
}
}
const styles = StyleSheet.create({
rootView : {
height: deviceHeight/2
},
itemText: {
padding: 8,
color: "#fff"
},
itemTextSelected: {
padding: 8,
color: "#fff",
backgroundColor: '#757575'
},
list: {
flex: 1,
}
});
これは、コンポーネントを使用する方法である
this.state = {
selectedItem : null,
data: [{key:"key1", label:"label1"}, {key:"key2", label:"label2"}]
}
...
<MultiSelect
data={this.state.data}
selectedItems={this.state.selectedItem}
onValueChange={ (itemValue) => thisObj.setState({selectedItem: itemValue})}/>
選択した値が結合されますそして
ドロップダウンに表示されるアイテムのリストは、JSON形式のAPIからフェッチされます。 ] [この するvar resultsArray =のような何かをする –
あなたがすべき[{: "キー1"、ラベル: "LABEL1" キー}、{ "LABEL2" キー: "KEY2"、ラベル}]どのように私はこのフォーマットに変換します; フェッチ(URL) \t \t .then((応答)=> response.json()) \t \t .then((responseJson)=> { \t \t \t \t responseJson.forEach(関数(アイテム){ \t \t \t \t \t resultArray.push({ \t \t \t \t \t \tキー:item.somekey、 \t \t \t \t \t \tラベル:item.someLabel \t \t \t \t \t})。 \t \t \t \t})。 \t \t \t \t this.setState({ データ:resultsArray、 showModal:真 }) \t \t}) \t \t}) –
- 1. 反応するネイティブ実行-IOSは私がネイティブIOSが反応している
- 2. 私はネイティブ反応する新しいです
- 3. 反応がネイティブで反応しない
- 4. ネイティブに反応するかネイティブで反応を開始する
- 5. ネイティブのネイティブの反応ネイティブで
- 6. 反応するネイティブ・ナビゲーションを反応させ、ネイティブ歩哨iosで
- 7. が反応し、ネイティブ
- 8. が反応ネイティブ
- 9. は私が反応-ネイティブ初心者</p> <p>だ反応し、ネイティブ
- 10. 反応ネイティブで反応ネイティブを実装する際にエラーが発生する
- 11. 反応ネイティブ私はiOSの
- 12. 反応し、ネイティブ
- 13. 反応し、ネイティブ
- 14. 共通のタブバーが反応し、ネイティブ・ルータ・フラックス&反応し、ネイティブ
- 15. はネイティブリアクト - 「反応するネイティブ・interface.jsを」 - WebStormが反応し、ネイティブの場合
- 16. リアクト - ネイティブが私の反応ネイティブのプロジェクトでpackages.json
- 17. ネイティブに反応するネイティブ0.49
- 18. 反応し、ネイティブ:コンポーネントのみ反応するネイティブ・ナビゲーションや反応ナビゲーションを
- 19. は反応するネイティブ
- 20. は、ネイティブ反応する
- 21. 試験方法 - 私はネイティブとJavascriptを反応させるためにはかなり新しいですネイティブ
- 22. スタイルが反応ネイティブ
- 23. フレックスボックスはネイティブで反応しますか?
- 24. typescriptですが、私はネイティブ反応し、私はtypescriptですを使用していますから、APIを取得使用しています反応し、ネイティブ
- 25. 反応ネイティブWebviewから選択オブジェクトを取得する方法
- 26. 壊れた自動バインディング反応し、ネイティブとを使用して反応させ、リレーので、私はネイティブ反応し、反応するリレーを使用してい
- 27. 反応し、ネイティブfirebase
- 28. が反応し、ネイティブbuildToolsVersion 24
- 29. は、ネイティブの反応 -
- 30. は、ネイティブリアクト - アンドロイドを - アラートダイアログcancelable falseはネイティブ反応する新しい
this.state.selectedItemフィールドに設定されますが、コードのあなたの作品を共有していただけますか? – wlisrausr
私はhttps://stackoverflow.com/questions/46646491/multiselect-in-react-native –
@wlisrausr上記のコメント –