React/TIL

간단하게 showMore/showLess 토글 만들기

윰윰로그 2021. 6. 1. 10:48

 

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'