2017-08-09 10 views
0

私のコンポーネントの動的スタイリングにはstyled-componentsが使用されていますが、私が望むように動作させることはできません。スタイルを変更したコンポーネントは、再レンダリング時にトランジションエフェクトを適用しませんか?

私は、プログラマティックでダイナミックにフォーカスされたボタンにease-in-outエフェクトを追加しようとしています。

enter image description here

あなたはtransitionプロパティは、任意の有効になりませんが、スタイリングが適用されて見ることができるように。これを達成する方法はありますか?

情報メモと同様に、コンポーネント(ボタン)は3秒ごとに再表示され、トグルすることができますか?もしそうなら、これを回避するには?

このコードスニペットに基づいて一見上のコンポーネント

class LanguageButton extends PureComponent { 
    render() { 
     const { children, theme, isFocussed, ...otherProps } = this.props; 

     const Button = styled.div` 
      border: 1px solid ${theme}; 
      margin-top: 10px; 
      margin-bottom: 10px; 
      background-color: transparent; 
      text-align: center; 
      padding-top: 25px; 
      padding-bottom: 25px; 
      min-height: 0; 
      transition: all 0.1s ease-in-out; 

      :hover { 
       background-color: ${theme}; 
       transition: all 0.1s ease-in-out; 
      } 
      :active { 
       background-color: ${theme}; 
      } 

      &.isFocussed { 
       transition: all 0.1s ease-in-out; 
       background-color: #ebebeb; 

       :hover { 
        background-color: ${theme}; 
        transition: all 0.1s ease-in-out; 
       } 
       :active { 
        background-color: ${theme}; 
       } 
      } 
     `; 

     return (
      <Button 
       className={classnames("BUTTON BUTTON--50 GM--noselect", { isFocussed })} 
       {...otherProps} 
      > 
       {children} 
      </Button> 
     ); 
    } 
} 

答えて

0

、私はあなたがこの「isFocused」クラスを削除/追加していることを仮定している、それはあなたの問題の根本です。トランジションを使用すると、トランジションが適切にレンダリングされないため、クラス自体を追加/削除しないようにする必要があります。

+0

見ていただきありがとうございますが、どうすればこれを行うことができますか?私は本当にクラスを追加/削除する以外の手がかりがありません:/ – NealVDV

+0

それはあなたが達成しようとしているものによって異なります。あなたは、ボタンのホバー上で、背景色を 'isFocused'クラスのホバー上で変更しています。あなたはあまりにも多くの衝突が起こっています。つまり、あなたのコードは' isFocused'クラスのスタイルを適用するだけです もう一つの注意点は、どこにでも 'transition'クラスを追加する必要がないということです。ボタン自体のように、あなたが望むルート要素に 'transition'を置いてください。 ちょうど 'isFocused'ピースなしでこの同じコードを実行して、ホバー上で動作する遷移を取得してください。 –

+0

はい、私はその問題を解決できると考えていたので、確かにそれはすべての場所にあります。しかし、ホバリングはうまく動いている、私は単純に反応が再レンダリングされているので、移行が起こっていないと思う:/任意のアイデア? (あなたが言ったことをすべて実装した後でもまだ動作していません) – NealVDV

関連する問題