March 16, 2024 • ☕️ 3 min read
react-query v4에서 queryKey는 왜 항상 배열만 받도록 바뀌었을까? 공식 문서를 찾아보니,
에 유용하다고 한다. 무슨 말이야?
🤖 ChatGPT에 물어보았다
Ref https://tanstack.com/query/v4/docs/framework/react/guides/query-keys
useQuery
의 select
option을 사용한다!
export const useTodosQuery = () =>
useQuery({
queryKey: ['todos'],
queryFn: fetchTodos,
select: (data) => data.map((todo) => todo.name.toUpperCase()),
})
여러가지 방법이 있지만, 위 방법이 가장 최적화되어있는 방법이다. 또한 부분적인 데이터 구독(subscription)이 가능하다.
Ref https://tkdodo.eu/blog/react-query-data-transformations
ex)
createStreetLight(["red", "yellow", "green"], "blue"); // 통과
function createStreetLight<C extends string>(colors: C[], defaultColor?: C) {
// ...
}
NoInfer
타입 활용 시
createStreetLight(["red", "yellow", "green"], "blue"); // 타입 에러 O
~~~~~~
// Argument of type '"blue"' is not assignable to parameter of type '"red" | "yellow" | "green" | undefined'.
function createStreetLight<C extends string>(colors: C[], defaultColor?: NoInfer<C>) {
// ...
}
input 타입이 radio 또는 checkbox일 때 change 합성 이벤트를 dispatch하고 싶으면 ‘change’가 아닌 ‘click’을 사용해야한다.
<div onChange={() => console.log("hi")}>
<input type="radio" />
</div>
const changeEvent = new Event("change", { bubbles: true });
input.dispatch(changeEvent); // ❌ hi 안 찍힘
const clickEvent = new Event("click", { bubbles: true });
input.dispatch(clickEvent); // ✅ hi 찍힘
( •◡-)✧
또 새로운 JS 런타임!
Ref https://wasmer.io/posts/winterjs-v1?
낮에는 완연한 봄날씨가 되어부렀당. 🌸 꽃 이모지가 상단으로 올라왔어.
평일에는 팀원들과 올림픽공원에서 청춘샷도 찍고, 주말엔 연차껴서 처음으로 글램핑이라는 것을 다녀왔다.
맘껏 먹고😋 마시고🍻 즐기고 불멍하고🔥 날씨도 완벽하고 모든 것이 착착이었던. 최고로 행복했던 한 주
다시 열심히 일할 힘 충전 완료!!