Today, What I learned?
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋ฒํผ์ ํด๋ฆญํ ๋๋ง๋ค ๋ฎค์ง์ปฌ์ ์์ธ ์ค๋ช ์ด๋ฏธ์ง๊ฐ ์ ๊ณ ํผ์ณ์ง๋ ๋ถ๋ถ์ด ํ์ํ๋ค.
collapsible view ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ ๋ฏํ์ง๋ง, ๊ฐ๋จํ๊ฒ ๊ตฌํํ๊ณ ์ถ์ด์ state๋ฅผ ์ด์ฉํ๋ค.
์ด ๊ณผ์ ์์ ๊ฒช์๋ ์ํ์ฐฉ์ค๋ฅผ ์ ๋ฆฌํด๋ณธ๋ค.
์ ํ, ํผ์นจ ๋ฒํผ
์ ๊ณ ํผ์ณ์ง๋ ๋ถ๋ถ์ ํ์๋ถ์ด state๋ก ์ ๊ตฌํํด ์ฃผ์ จ๋ค.
const [isMoreButton, setMoreButton] = useState(false);
isMoreButton์ ๋ฐ๋ผ์ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๊ฐ๋ ์์ญ์ด ๋ณด์ด๊ณ ๊ฐ์ถฐ์ง๋๋ก ํ๋ค.
{isMoreButton && (
<MoreDetail width={SCREEN_WIDTH}>
<DetailImg
style={{ resizeMode: 'stretch' }}
source={{
uri: `${musicalData?.dbs?.db[0].styurls[0].styurl[0]}`,
}}
/>
</MoreDetail>
)}
์ฒ์์ ์ ์์ญ์ ๋ฎค์ง์ปฌ ์ ๋ณด ์์ญ ์ปดํฌ๋ํธ ์์ ์์๋๋ฐ, ์ด๋ ๊ฒ ๋ณ๊ฒฝ๋์์ ๋ ์ด๋ฏธ์ง๊ฐ ๋ค๋ฅธ ์์ญ์ ์ด๋ฏธ์ง๊น์ง ์นจ๋ฒํ๊ฒ ๋๋ค๋ ๋ฌธ์ ๊ฐ ์์๋ค.
๊ทธ๋์ ์ด๋ฏธ์ง ์์ญ์ ์์ ์ปดํฌ๋ํธ ๋ฐ๊นฅ์ผ๋ก ๋บ๋ค.
<MoreButton
onPress={() => {
setMoreButton(!isMoreButton);
}}
>
{isMoreButton ? (
<TempText>์ ๊ธฐ</TempText>
) : (
<TempText>์์ธ๋ณด๊ธฐ</TempText>
)}
</MoreButton>
</InfoPart>
))}
</InfoTotalPart>
{isMoreButton && (
<MoreDetail width={SCREEN_WIDTH}>
<DetailImg
style={{ resizeMode: 'stretch' }}
source={{
uri: `${musicalData?.dbs?.db[0].styurls[0].styurl[0]}`,
}}
/>
</MoreDetail>
)}
๋ ์ด๋ฏธ์ง๊ฐ ์ต์ ๋ช์ฒ ํฝ์
์ ๊ธด ์ด๋ฏธ์ง์ด๋ค ๋ณด๋ ScrollView
์์ ์์ ๋ ์ด๋ฏธ์ง๊ฐ ๋์ค์ง ์๋ ํ์์ด ์์๋ค.
์ด๋ฏธ์ง ์ปดํฌ๋ํธ์ resize:: 'stretch'
๋ผ๋ ์์ฑ์ ์ฃผ์ด ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ฅผ ์ปจํธ๋กคํ ์ ์์๋ค.
style={{ resizeMode: 'stretch' }}
๊ทธ๋์ View
์ปดํฌ๋ํธ๋ก ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ธ๊ณ , ์์ ํ์ง ์์ง๋ง ๊ธฐ๊ธฐ๋ณ ๊ฐ๋ก์ฌ์ด์ฆ์ ๋ฐ๋ผ ๋์ด๋ฅผ ์กฐ๊ธ ์กฐ์ ํ ์ ์๋๋ก ํ๋ค.
const MoreDetail = styled.View`
width: 90%;
height: ${(props) =>
props.width <= 375 ? SCREEN_HEIGHT * 8 + 'px' : SCREEN_HEIGHT * 9 + 'px'};
padding: 10px 0;
margin: 0 auto;
`;
์ต์ข ์ ์ผ๋ก ์์ฑ๋ ๋ถ๋ถ์ ์ด๋ ๋ค. ๋ถ์กฑํ ๋ถ๋ถ์ด ์๊ธด ํ์ง๋ง state๋ก ๊ตฌํํ ์ ์ ๋ง์กฑ์ค๋ฝ๋ค!
Comment