のための私のSearchViewリアクト - ネイティブ - 動的な状態をJSONからちょっとそこ:)私は問題以下しまったスイッチ
にフィルタモーダルを追加することによって、私はいくつかのイベントを挙げることができる
SearchPage
を構築しました。これはすべてかなりうまくいく。今私はSearchPage
にfilter
を追加しようとしています。私がスイッチのスイッチ値を変更しようとすると、値の状態が設定されていないため、ルートに戻ります
手順私が説明した:
私はすべての私の
filter
が記載されていると私はSwitch
を使用してtrue/false
を設定することができているModal
ビューを開くしようとしています。私の考えはそれのためにJSON
を作成することによって、すべてのfilter Settings
を取得することでした:
module.exports = {
"filter":
{
"track": [
{
"id": 1,
"description": "IoT & Living tomorrow"
},
{
"id": 2,
"description": "Smart & Digital Retail"
},
{
"id": 3,
"description": "Startups, Digital Culture & Collaboration"
}
]
}
}
上記JSONはちょうどexpampleのためである - 通常はそのはるかに大きいとちょうどを追跡するよりも多くの話題を持っています
JSON
をインポートし、var filter
に保存します。私は、データがここに適切なフォーマットである確認 - 今私はfilter Modal
import React, {Component} from 'react';
import {
ListView,
Modal,
StatusBar,
StyleSheet,
Text,
TouchableOpacity,
View,
Switch
} from 'react-native';
var filter = require('../JSON/filter');
class PopoverFilter extends Component {
constructor(props) {
super();
// ds for the menu entries
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
eventTracks: ds.cloneWithRows(filter.filter.track)
}
this.show = this.show.bind(this);
}
render() {
return(
<Modal>
<ListView
style={styles.mainView}
renderRow={this.renderMenuEntries.bind(this)}
dataSource={this.state.eventTracks}/>
</Modal>
);
}
renderMenuEntries(entry) {
var switchState = entry.description;
return(
<View style={styles.switchView}>
<Text style={[styleHelper.fonts.titleSize, styles.text]}>{entry.description}</Text>
<Switch onValueChange={(value) => this.switchChanged(switchState, value)}
value={this.state.switchState}/>
</View>
);
}
switchChanged(field, value) {
var obj = {};
obj[field] = value;
this.setState(obj);
}
}
var styles = StyleSheet.create({
});
module.exports = PopoverFilter;
で私のクラスを作成しました>
filter.track -> All my JSON Objects
不足しているスタイルを無視してもしてくださいモーダルにはもっと多くのオブジェクトがありますが、この場合は重要ではありません。
最も重要なのは、すべてのスイッチを
renderMenuEntries
メソッドでレンダリングしようとしていて、すべてのエントリを与えることです。>スイッチだけが正しく設定されていません。私がスイッチの価値を変えようとする限り、即座にそのルートに戻ります。状態は設定されていません。
たぶん私の解決策は不可能であり、私はすべての状態が静的にする必要があります - しかし、この解決策は、私が
こんにちはメイソンを、最初にあなたの大切な、完全な応答をありがとうございました。私はあなたのソリューションをテストしようとし、それはかなりいいようです。あなたのソリューションを実装している限り私はフィードバックを提供します。ありがとうございました:) –
こんにちはメーソン、私はあなたのソリューションをテストする時間があったし、私がやりたかったことに完全に適合します。あなたの詳細な提案とあなたが取った時間をありがとうございました。また、私は自分のコードでもっとうまくいくことができるかについてのさらなる情報にも感謝しています:) –
これは素晴らしいジョナサンです。私はコードサンプルとヒントがあなたを助けてくれてうれしいです。この結果に満足している場合は、それを回答としてマークして、同じ問題を捜している他の人が解決策の恩恵を受けるようにしてください。 –