실시간 데이터를 보여줘야 하는 사이트에 유용한 ajax요청 관리 라이브러리
npm install react-query
import { QueryClient, QueryClientProvider } from 'react-query';
const queryClient = new QueryClient();
<QueryClientProvider client={queryClient}> // 기존 App태그를 해당 태그로 감싸기
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
</QueryClientProvider>,

function App(){
let result = useQuery('작명', ()=>
axios.get('https://codingapple1.github.io/userdata.json')
.then((a)=>{ return a.data })
)
}
3-1. 위에 코드를 비동기화로 변경
비동기화로 코드를 리팩토링하게되면 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.
let result = useQuery('data', async () => {
const a = await axios
.get('https://codingapple1.github.io/userdata.json');
return a.data;
});
console.log(result.data);
result라는 변수에 ajax 현재 상태가 알아서 저장됩니다.
function App(){
let result = useQuery('작명', ()=>
axios.get('url')
.then((a)=>{ return a.data })
)
return (
<div>
{ result.isLoading && '로딩중' } // 로딩중
{ result.error && '에러남' } // 오류
{ result.data && result.data.name } // 정상 작동
</div>
)
}
페이지 체류하고나서 일정시간이 경과하거나, 다른 창으로 갔다가 다시 페이지로 돌아오거나, 다시 메인페이지로 돌아갈 때, 여러 경우에 알아서 ajax 요청을 다시 해줍니다.
재요청 끄는 법, 재요청간격 조절하는 법도 있습니다.
{staleTiem : 요청할시간ms간격} // 1000 = 1초 간격
{staleTiem : 0} // 재요청 끄기
브라우저에서 제공하는 반영구적 데이터 저장소
key : value 형태로 저장이 가능문자만 저장 가능데이터 삭제하지 않을 시 반영구적으로 보존localStorage.setItem('key','value')localStorage.getItem('key')localStorage.removeItem('key')
- 데이터 수정 : 수정하는 문법은 별도로 없기 때문에 따로 꺼내서 수정하고 저장해야한다.
array / ojbect를 저장하려면 json형식으로 변경해야한다.
JSON.stringify() : array / ojbect를 JSON형식으로 변경한다.
JSON.parse() : 저장한 데이터의 JSON형식을 제거한다.
let obj = {name : 'kim'};
localStorage.setItem('data', JSON.stringify(obj));
let getObj = localStorage.getItem('data');
console.log(JSON.parse(getObj));


브라우저에서 제공하는 휘발성 데이터 저장소
sessionStorage.setItem('key','value')sessionStorage.getItem('key')sessionStorage.removeItem('key')
- 데이터 수정 : 수정하는 문법은 별도로 없기 때문에 따로 꺼내서 수정하고 저장해야한다.