2016-05-11 6 views
0

touchableOpacityコンポーネントに.png画像ファイルが含まれています。画像ソースの1つを変更し、変更イベントをonPressイベントにバインドします。私は現在プレスイベントに応答して画像ソースを更新する方法

source: require('someSource.png') 

ようgetInitialState(中プロップ)としてソースを初期化したonPress関数へ

this.setState({source: require('someOtherSource.png')}); 

を実装します。何とかresizeMode: 'contains'をイメージスタイルに追加したので、イメージのサイズはそれに応じて変更されます。しかし、2番目の画像ファイルはビューにロードされませんでした。 画像表示部分:ので、私はdoRegisterでSETSTATE機能があるかもしれない呼び出すと思っ

this.setState({source: require('someOtherSource.png')}); 

私がイメージソースの3つの状態があります

<TouchableOpacity style={styles.newUserRegister} 
        onPress={this.doRegister}> 
       <Image style={styles.accNewUser} source={this.state.source}/> 
</TouchableOpacity> 

とdoRegister()関数の中でより良い解決策。場合も

それはスタイリングに問題がある場合、これは私があなたのケースのために、この例をしたaccNewUser

accNewUser:{ 
    marginTop:5, 
    resizeMode: 'contain', 
    alignItems: 'center', 
}, 
+0

さらに詳しい情報を提供できますか? – klaasman

+0

@Klaasman詳細を追加しました –

+0

はコンポーネントの有効範囲にバインドされた 'doRegister'メソッドですか?さもなければ、メソッドはコンポーネントの 'setState'を提供しないスコープで間違って呼び出されます。 私の心が沸き起こった何か:コンポーネントの外部に依存関係をインポートしてみてください。 'const someOtherSourceImg = require( 'someOtherSource.png')'それを 'this.setState({source:someOtherSourceImg});として使用します。 ' – klaasman

答えて

0

のスタイルです:https://rnplay.org/apps/jePI5Q

残念ながらRNPlayは資産を追加することはできません、だから私はuriの参照で外部画像を使用しなければならなかった。これらの参照をrequire(<asset>)と置き換えるだけで問題ありません。

この例では、defaultSource(矢印上)ともう一方(矢印下)の間で状態を切り替えることができます。

+0

実際に画像ソースの3つの状態があり、画像サイズの変化を見ることができますが、画像自体は正しいソース –

関連する問題