2017-07-17 15 views
1

この条件付きスタイリングは、まだネイティブレスで動作していますか?コンポーネント全体を再レンダリングせずにネイティブダイナミックスタイルに反応する

style={[styles.base, this.state.active && styles.background]} 

コンポーネントがマウントされると、アクティブ状態はfalseに設定されます。

画面には、アクティブ状態をtrueに変更するボタンがあります。それから私は背景のスタイルが表示されることを期待します。しかし、ページがリロードされない限り、そうではありません。

おかげ

答えて

1

あなたが反応し、ネイティブからアニメーションモジュールを使用することに興味があるようですね。アニメートされたモジュールを使用すると、スタイルを変更またはアニメートできます。 LayoutAnimationを使用することもできます。 Animation DocumentationLayoutAnimation documentationをお読みください。

まず、LayoutAnimationを使用して、それが必要なものかどうかを確認することができます。セットアップが簡単です!

import React, { Component} from 'react'; 
import { View, LayoutAnimation, UIManager, Platform } from 'react-native'; 

class MyComponent extends Component { 
    constructor(props) { 
     super(props); 

     if (Platform.OS === 'android') { 
      UIManager.setLayoutAnimationEnabledExperimental(true); 
     } 
    componentWillUpdate() { 
     LayoutAnimation.spring() // automatimagically animates style changes 
    } 
    render() { 
     <View style={[styles.base, this.state.active && styles.background]}> 
     </View> 
    } 
} 
+0

ありがとう:

は、ここでの例です。私が必要とするもののように見えます。私はそれを試し、あなたに知らせるでしょう。 – sbkl

+1

完全に動作します。ありがとう!反応ネイティブからのインポートにPlatformを追加して答えを編集しました。 – sbkl

+0

ああ!私はそれを逃したとは信じられない! :) –

関連する問題