const Tour = ({ info }) => {
const [readMore, setReadMore] = useState(false);
return (
<div>
<p>
{readMore ? info : `${info.substring(0, 200)}...`}
<button onClick={() => setReadMore(!readMore)}>
{readMore ? "show less" : "show more"}
</button>
</p>
</div>
);
};
1. readMore이라는 state를 만든다.
2. readMore가 true일 때는 info 내용 전부를 보여주고
false일 때는 0부터 199번째까지 부분 문자열을 보여준다.
참고) https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/substring
3. 아래에 버튼을 만드는데 클릭할 때 마다 readMore의 state를 토글해준다.
4. 버튼 속 텍스트도 readMore의 state에 따라 달라지는데,
readMore가 true일 때는 paragraph의 텍스트가 다 보여질테니까 'show less'가 뜨도록 해야하고
반대로 readMore이 false일때는 paragraph의 텍스트가 잘려진 상태이니까
'더 보여줘~'라는 의미에서 'show more'
'React > TIL' 카테고리의 다른 글
웹팩이란 무엇인가 (0) | 2021.01.15 |
---|---|
노드 패키지 매니저란 무엇인가 (0) | 2021.01.15 |
VirtualDOM - 게임 엔진 원리를 도입한 개발자들 (0) | 2021.01.15 |
불필요한 http request를 잡아랏! (feat. Component Life Cycle) (0) | 2021.01.06 |
useEffect에서 async/await 사용하고 싶다면? (0) | 2020.12.29 |