반응형
필요성
Alarm이라는 컴포넌트를 만드는데, Alarm의 props 값을 받아서 Alarm 내의 state 초기값으로 설정하고 싶다.
이렇게 하면 될까?
// pushAlarmStatus : props
const [alarmStatus, setAlarmStatus] = useState(pushAlarmStatus);
const Alarm = ({ pushAlarmStatus }: Props) => {
const [alarmStatus, setAlarmStatus] = useState(pushAlarmStatus);
console.log(alarmName, 'status:', alarmStatus);
console.log(alarmName, 'status:', pushAlarmStatus);
return (
<View>
<Text>{alarmName}</Text>
<AlarmSwitch color={styles.redColor.color} size={7.5} status={alarmStatus} />
</View>
);
};
에러
로그를 찍어보면 alarmStatus (state값)과 pushAlarmStatus (props값)이 다른 것을 확인할 수 있다.
해결책 : useEffect
useEffect 훅을 활용해서 state의 값을 props 값으로 변경시켜준다. props 값을 관찰하다가 props 값이 바뀔때마다 useEffect() 훅이 다시 돌아간다.
const [alarmStatus, setAlarmStatus] = useState(pushAlarmStatus);
useEffect(() => {
setAlarmStatus(pushAlarmStatus);
}, [pushAlarmStatus]);
반응형
'프론트엔드 웹 > React' 카테고리의 다른 글
eslint 설정하기 (0) | 2022.01.12 |
---|---|
react-router-dom v6에서 현재 url 가져오기 (0) | 2022.01.12 |
[에러해결] You are running `create-react-app` 4.0.3, which is behind the latest release (5.0.0) (3) | 2022.01.05 |
타이밍 애니메이션 Typewriter-effect 예제 (0) | 2021.10.23 |
React fullpage 에러 해결하기 (0) | 2021.10.23 |