STUDY/React & React Native
[리액트] state 업데이트 느린 경우_💡 / useState, useEffect
ez1n
2022. 8. 7. 20:10
[React_ useEffect 활용하기]
useState 업데이트가 한 박자씩 느린 경우를 해결하는 방법을 알아보자
<STUDY>
리액트 useState를 사용하여 state를 업데이트 하다보면 한 박자 씩 느리게 나오는 되는 경우가 있다.
useEffect를 사용하면 된다고 해서 사용을 해 보았는데 똑같은 결과가 출력되었다.
- App.jsx
import React, { useState } from 'react';
imoprt DataPage from './dataPage';
export default function App () {
const [data, setData] = useState(
{
name: null,
age: null,
job: null,
}
);
// state 업데이트 함수
const updateData = (item) => { setData({ ...data, item }) };
return (
<DataPage updateData={updateData} data={data} />
)
}
- DataPage.jsx
import React, { useEffect } from 'react';
export default function DataPage (props) {
const newData = {
name: 'ttugttag',
age: 20,
job: 'student',
}
useEffect(() => {
props.updateData(newData);
console.log(props.data);
}, []);
return (
``````
)
}
state를 업데이트하고 로그를 찍어보았을 때,
이렇게 출력되었다.
이유는 useState가 비동기적으로 동작하기 때문이었다!
useEffect를 사용하면 된다고 해서 사용해 보았는데도 제대로 동작하지 않았다....
❓ 해결방법
💡 useEffect 활용하기
import React, { useEffect } from 'react';
export default function DataPage (props) {
const newData = {
name: 'ttugttag',
age: 20,
job: 'student',
}
useEffect(() => {
props.updateData(newData);
console.log(props.data);
}, [props.data]);
return (
``````
)
}
- useEffect의 [] 안에 props.data를 넣어주어 data가 업데이트 될 때마다 state 업데이트 함수를 실행시켜 주면 된다.
제대로 나온다 :)
처음 코드가 제대로 동작하지 않았던 이유는 [] 안에 아무 값도 넣어주지 않아서
페이지가 렌더링 되고 한 번만 실행되었기 때문이었다.
다음부터는 당황하는 일이 없도록 기록기록 해두자!
내가 보려고 정리하는 리액트🔆
ez1n - Overview
Study -ing. ez1n has 8 repositories available. Follow their code on GitHub.
github.com