2017-04-18 27 views
1

ボタンをクリックして別の画面にデータを渡したい。私はルータフラックスを使用していましたが、うまくいきましたが、反応ナビゲーションではうまくいきません。反応ナビゲーションでネイティブパスデータに反応する

onSearch() { 
    fetch(`URL`, { 
     method: 'GET', 
     }) 
     .then((response) => { return response.json() }) 
     .then((responseJson) => { 
     this.props.navigation.navigate('Resultados', { data: responseJson }); 
     }) 
     .catch((error) => { 
     Alert.alert("0 Cars!"); 
     }); 
    } 

それは動作しません:私はこれにコードを変更した場合、

onSearch() { 
    fetch(`URL`, { 
     method: 'GET', 
     }) 
     .then((response) => { return response.json() }) 
     .then((responseJson) => { 
     Action.results({data: responseJson}); 
     }) 
     .catch((error) => { 
     Alert.alert("0 Cars!"); 
     }); 
    } 

しかし反応し、ナビゲーション上: だから、ルータ・フラックスに、ボタンのクリックで、それがこの関数を呼び出します私はいつもアラート "0車!"を得る。 私は何が間違っていますか?ルータフラックスでは、それはかなり簡単でした。

これは私がonSearch関数を呼び出す方法です:

<Button onPress={this.onSearch} style={{backgroundColor: '#f48529', width: 140, borderRadius: 30, height: 40}} > 
     <Text style={{color: 'white', fontFamily: 'rubik-light', fontSize: 17}}>Search</Text> 
     <Icon size={15} name={'search'} color={'white'} /> 
    </Button> 
+0

を試してみてくださいあなたのonPress={this.onSearch}onPress={this.onSearch.bind(this)}

を変更してみてください。また

キャッチの内部を渡すと、あなたのAjaxリクエストのエラーが出ます。 – WilomGfx

+0

どういう意味ですか?ルータフラックスでは、私は "0車"しか得られません。データがなくても反応ナビゲーションでは、データがあってもそのアラートが表示され、次の画面は表示されません。 @WilomGfx – waze

+0

アラート0の代わりにconsole.log(エラー)を試してみませんか?だからあなたはエラーが何であるか知っています。 – cjmling

答えて

0

、あなたが正しいことをやっている

onSearch() { 

    const { navigate } = this.props.navigation; 

    fetch(`URL`, { 
     method: 'GET', 
     }) 
     .then((response) => { return response.json() }) 
     .then((responseJson) => { 
     navigate('Resultados', { data: responseJson }); 
     }) 
     .catch((error) => { 
     Alert.alert("0 Cars!"); 
     }); 
    } 
+0

私はこのエラーが表示されます:未定義のプロパティ 'ナビゲーション'を読み取ることができません – waze

+0

@waze上記のようにコードを編集しましたか? 1st。 const {navigate} line .. 2nd。 – cjmling

+0

はい、私は..しかし、私もそれらの変更なしで試してみて、同じエラーです。 – waze

関連する問題