2017-06-28 4 views
0

私はcss3、ES6とReactでさらに機能を読み込もうとしています。CSS、ES6のより多くの機能を読む

私は非常に長い説明をしています(これはサーバから来ているので動的です)、これに「もっと読む」機能を追加したいと思います。説明が3行以上ある場合、ボタン/リンクは「もっと読む」と言えるはずです。ボタンをクリックすると、残りの説明が表示されます。

これは私のコードです:

が反応:

<div className="content"> 

Description of the product 

<button onClick=(() => {})>Read more</button> 

</div> 

CSS:私がクリックしたときに

.content{ 
overflow: hidden; 
line-height: 1.2em; 
height: 3.6em; 
} 

私が把握することはできませんよ何があるボタン '続きを読む' をどのようにdiv idをautoに変更することができます。 私はjavascriptのコードを持っているが、私は

JS ES6

でこれを実装する:すべてのヘルプは高く評価されて

document.querySelector('button').addEventListener('click', function() 
{ 
    document.querySelector('#content').style.height= 'auto'; 
this.style.display= 'none'; 
}); 

答えて

1

私はここであなたのためのフィドルを作成しました:https://jsfiddle.net/jwm6k66c/3063/。 Reactを使用しているときにdomを直接操作しないようにしたい。好ましい方法は、コンポーネントstateを使用してcontent divのクラスを切り替えることです。

class App extends React.Component { 
    constructor(){ 
    this.description = getDescription(); 
    this.state = { 
     expanded: false 
    } 
    } 
    render(){ 
    const { expanded } = this.state; 
    const toggledClass = expanded ? 'expanded' : 'collapsed'; 
    return(
     <div> 
     <div className={`content ${toggledClass}`}> 
      {this.description} 
     </div> 
     <button onClick={() => this.setState({ expanded: !expanded })}> 
      {expanded ? 'View Less' : 'View More'} 
     </button> 
     </div> 
    ) 
    } 
} 

CSS

.content { 
    overflow: hidden; 
    line-height: 1.2em; 
    height: 3.6em; 
} 
.content.collapsed{ 
    overflow: hidden; 
} 
.content.expanded{ 
    overflow: visible; 
    height: auto; 
} 
+0

はあなたの助けのためにありがとうございました!本当に感謝しています。これはES6でのみ可能でしょうか? – jackysatpal

+0

それはすべてes6です。 es6とは何ですか? –

+0

私はES6だけを使ってこれを行うことができるのか、それとも反応状態か何かを使っていないのだろうかと思っていました。 – jackysatpal

関連する問題