๋ฆฌ์กํธ์์์ ์ํ๊ด๋ฆฌ๋ ์ค์ํ๋ค๋ ๊ฒ์ ๋๋ผ๊ฒ ํ๋ ํ๋ก์ ํธ์๋๋ฐ,
์ด๋ฒ์๋ ์ํ๊ด๋ฆฌ์ ๋ฌธ์ ๋ก ์ฐฉ๊ฐํ ๊ฒฝ์ฐ๋ก ์ง๊ถ์ธ ์คํฐ๊ณผ ํจ๊ป 3์๊ฐ์ ์ฝ์งํ๋ค.&0&
๐๋ฌธ์ ๋ฐ์ 1
ํ์ ์ ํํ์ ๋ ์ ํํ ํ์ ์ ๋ณด๋ฅผ setStateํ์ฌ ํ์ ๋ค๋ฅธ component์์ ์ฌ์ฉํ๋ ค ํ์ผ๋
๋ฐ์ดํฐ๊ฐ ๋ ๋๋ง ๋์ง ์์
StartScreen์์ handleClickTeam
const handleClickTeam = async () => {
let teamId;
if (type === 'home') {
teamId = game.homeTeamId;
} else {
teamId = game.awayTeamId;
}
try {
const { data } = await axios.get(
`http://13.209.109.186/baseball/games/${game.gameId}/${teamId}`
);
const [awayInfo, homeInfo] = [data.awayTeam, data.homeTeam];
setAwayTeam(awayInfo);
setHomeTeam(homeInfo);
homeInfo.userSelected && setIsHome(true);
history.push('/play-screen');
} catch {
setPlayable(false);
}
if (isHome) {
setMyTeam(homeTeam.players);
setMyTeamName(homeTeam.teamName);
setCounterTeam(awayTeam.players);
setCounterTeamName(awayTeam.teamName);
setIsDefense(isHome);
} else {
setMyTeam(awayTeam.players);
setMyTeamName(awayTeam.teamName);
setCounterTeam(homeTeam.players);
setCounterTeamName(homeTeam.teamName);
}
};
์ฒ์์๋ hadleClickTeam์์ if(isHome)์ ๋ฃ์ด๋
์์์ setIsHome(true)๋ก ์ธํด ๋ฐ๋ isHome๊ฐ์ผ๋ก if๋ฌธ์ ๋๊ฒ์ด๋ผ ์์ํ์ง๋ง
์ค์ ๋ก๋ ์ ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์if(isHome)์ผ๋ก ๋๊ธฐ ๋๋ฌธ์
์ด component๊ฐ ๋ ๋๋ง๋์ด๋ฒ๋ฆฐ ํ set์ด ๋์๋ค.
+ handleClickTeam์ ํจ์์ด๊ณ Component๊ฐ ์๋๋ผ ๋ฆฌ๋ ๋๋งํ๋๊ฒ ์์ด์ ๋ค๋ฅธ๊ณณ์๋ค ๊ตฌํ์ ํ๊ธฐ๋ก ํ๋จ.
์ํ ์ธํ ์ด ๋์ด๊ฐ ๊ณณ์
PlayScreen
const PlayScreen = (props) => {
const {
isHome,
homeTeam,
awayTeam,
setMyTeam,
setMyTeamName,
setCounterTeam,
setCounterTeamName,
} = useContext(GlobalContext);
if (isHome) {
setMyTeam(homeTeam.players);
setMyTeamName(homeTeam.teamName);
setCounterTeam(awayTeam.players);
setCounterTeamName(awayTeam.teamName);
// setIsDefense(isHome);
} else {
setMyTeam(awayTeam.players);
setMyTeamName(awayTeam.teamName);
setCounterTeam(homeTeam.players);
setCounterTeamName(homeTeam.teamName);
}
return (
<PlayScreenDiv>
<Score />
<CurrentPlayer />
<Stadium />
<LogList />
</PlayScreenDiv>
);
};
์ฌ๊ธฐ์ useContext๋ก ์ํ๋ฅผ ๊ฐ์ ธ์ isHome์ด true์ด๋ฉด ๊ฐ์ ๋ ๋๋ง ํด์ค๋ค.
PlayScreen์ Component์ด๊ธฐ ๋๋ฌธ์ if ์กฐ๊ฑด์ด returnํ๊ธฐ ์ ์ ์ ์ ์๋ ํ๊ฒ ๋๋ค.
๐๋ฌธ์ ๋ฐ์ 2
์ฐ์ธก ์๋จ์ ํ์ฌ์ ํฌ์ ๋ฐ์ดํฐ๊ฐ ๋ ๋๋ง ๋์ง ์์๋ค.
CurrentPlayer (PlayScreen์ด ๋ฟ๋ฆฌ๋ component)
const CurrentPlayer = () => {
const { isHome, myTeam, counterTeam } = useContext(GlobalContext);
const myPitcher = myTeam.filter((player) => player.pitcher === true)
const counterPitcher = counterTeam.filter(
(player) => player.pitcher === true
);
์ฌ๊ธฐ์ ๋ฐ์ myTeam์ ์ ๋ณด๋ฅผ myPitcher์ ๋ฟ๋ ค์ฃผ์ด์ผ ๋๋๋ฐ ๋์ค์ง ์์๋ค.
์ฐ๋ฆฌ๋ ์ํ๊ด๋ฆฌ๊ฐ ๋ ์๋ชป๋ ์ค ์๋ฉฐ ์์ ์ฌ๋ฐ๋ฅธ ๊ณผ์ ๋ค์ ๋ฐ๊พธ๊ธฐ ์์ํ๋ค .
PlayScreen์์ if/else๋ฅผ useEffect๋ก ๋ฌถ๊ธฐ -> ๊ฒฐ๊ณผ๋ ๋์ผํ๋ค. ์๋? useEffect๋ฅผ ํ๋ ์ํ๋ ์๊ด ์๊ธฐ ๋๋ฌธ
๊ทธ์ธ ์ํ๊ด๋ฆฌ์ ๋ฐ๋ฅธ ๋ฌธ์ ๋ก ํ๋จํ๊ณ ๋ค์ฃฝ๋ฐ์ฃฝ ์๊ธฐ ์์
ํ์ง๋ง ๋ฌธ์ ๋ ๋ค๋ฅธ๊ณณ์ด์๋ค ๋ฐ๋ก ๋ฐ์ดํฐ ์๋ชป ์ง์ ํด์ ๋ถ๋ฌ์ค๊ธฐ ๐ฆ
ํด๊ฒฐ
์๋ชป๋ ๋ถ๋ถ์ ๋จ์ํ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์ค์
const CurrentPlayer = () => {
const { isHome, myTeam, counterTeam } = useContext(GlobalContext);
const myPitcher = myTeam.filter((player) => player.pitcher === true)[0];
const counterPitcher = counterTeam.filter(
(player) => player.pitcher === true
)[0];
myTeam์ pitcher๊ฐ false์ธ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ๋ฐฐ์ด์ด ์ค๊ฒ ๋๋๋ฐ
๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๋ผ๋ [0] ํ์๋ฅผ ํด์ผํ๋ค.
๐ optinal chaining
<CurrentPlayerDiv>
<PlayerTag>PITCHER</PlayerTag>
<Player>
{isHome ? (
<PlayerName>{myPitcher?.name}</PlayerName>
) : (
<PlayerName>{counterPitcher?.name}</PlayerName>
)}
{isHome ? (
<PitcherNum>#{myPitcher?.backNumber}</PitcherNum>
) : (
<PitcherNum>#{counterPitcher?.backNumber}</PitcherNum>
)}
๊ทธ๋ฆฌ๊ณ ๋ฟ๋ ค์ค๋ myPitcher?.name ์ ํตํด
myPitcher๊ฐ null์ด ์๋ ๋ ๋ฟ๋ ค์ฃผ๋ผ๋ ์ง์ ์ ํ์ค๋ก ํ ์ ์๊ฒ ๋์๋ค.
๋๋์
๋ฆฌ์กํธ์ ์ํ๊ด๋ฆฌ์ ์์ ์ด ์์ด
์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ํ๊ด๋ฆฌ ๋๋ฌธ์ด๋ผ๊ณ ๋จ์ธํ๋ค.
์กฐ๊ธ๋ ์๋ฆฌ์ ๋ํ ์ดํด๊ฐ ํ์ํ๊ณ , data์ ํ์ ๋ํ ์ ๊ฒฝ์ฐ์
'๐ฟ Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React๋ก Slider ๊ตฌํ & React์์ Canvas๋ก ๊ณก์ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ (+globalCompositeOperation ) (0) | 2021.06.02 |
---|---|
[SidePJ] airdnd 1๋ถ - ํ๋ก์ ํธ ์์ ! (0) | 2021.05.28 |
[Side PJ] ์ผ๊ตฌ๊ฒ์ - ์ฝ์ง๊ณผ ๋ฐฐ์ด์ ๐ (0) | 2021.05.20 |
todo List ํ๋ก์ ํธ (0) | 2021.04.10 |
์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ํ๋ก ํธ ์๋ 1๋ฌ์ฐจ ํ๊ณ (0) | 2021.02.18 |
๋๊ธ