2017-01-06 9 views
0

ZoomedInが真の場合、常にthis.state.transform[ref]が定義されます。 zoomedInが真である場合にのみ、zoomInを実行します。ここに私の関数は以下のようになります。関数からインラインでスタイルを条件付きで適用できますか?

zoomedIn() { 
    return ['zoomIn', 'addBg', 'zoom', 'removeBg'].includes(this.props.zoom) 
    } 
    zoomIn (ref) { 
    if (this.zoomedIn()) { 
     const transform = this.state.transform[ref] 
     if (transform.scale > 1.1) { 
     return { 
      transform: 'translateY(' + transform.offset + 'px) scale(' + transform.scale + ')' 
     } 
     } 
    } 
    } 

    <div ref='carousel' 
    className='carousel' style={{ 
     ...this.zoomIn('carousel') 
    }} 
> 

私が代わりにこれを行うことを試みたが、それはstate.transformが定義されていないと文句を言い。

zoomedIn() { 
    return ['zoomIn', 'addBg', 'zoom', 'removeBg'].includes(this.props.zoom) 
    } 
    zoomIn (ref) { 
     const transform = this.state.transform[ref] 
     if (transform.scale > 1.1) { 
     return { 
      transform: 'translateY(' + transform.offset + 'px) scale(' + transform.scale + ')' 
     } 
     } 
    } 

    <div ref='carousel' className='carousel' style={{ 
     ...this.zoomedIn() && this.zoomIn('carousel') 
    }} 
> 
+0

を? – Pineda

+0

@Pinedaどうすればいいのでしょうか? – Himmators

+0

以下のようにzoomedInから返された値に基づいてJSXを条件付きでレンダリングすることで、必要なものを実現できます。 – Pineda

答えて

0

あなたは条件付きで異なるJSXはzoomedInの値が与えられたレンダリングすることができます:あなたは、現在のコンポーネントのスコープにzoomInをバインドしました

if(zoomedIn()){ 
    // you know this.state.transform exists here: 
    const transform = this.state.transform[ref] 
    if (transform.scale > 1.1) { 
    return <div 
       ref='carousel' 
       className='carousel' 
       style={{ 'translateY(' + transform.offset + 'px) scale(' + transform.scale + ')' }} 
      /> 
    }else{ 
    return <div ref='carousel' className='carousel' />; 
    } 
}else{ 
    return <div ref='carousel' className='carousel' />; 
} 
関連する問題