//components
import Main from "pages/main-page";
import {QueryClientProvider, QueryClient, queryCache} from 'react-query'
export default function App() {
const queryClient = new QueryClient();
return (
<QueryClientProvider client={queryClient}>
<Main/>
</QueryClientProvider>
);
}
//방법1
import { useQuery } from 'react-query'
export default function App(){
const {
data, error, isFetching, isLoading, ...
} = useQuery('todos', getApiFunction1,{options ...})
console.log(data)
console.log(error)
//dependency Array를 사용해야하는 경우
const {
data, error, isFetching, isLoading, ...
} = useQuery(['todos', dependencyValue], getApiFunction1,{options ...})
}
//방법2
import { useQuery } from 'react-query'
export default function App() {
const [state1, setState1]=useState()
const num2 = 0
const countQueries = useQueries( //usequery
{
queryKey:["getApiFunction",[num2]], // 쿼리를 캐싱할 목적으로 사용하는 키.
queryFn:()=>getApiFunction(), // 쿼리 실행 함수들
onError: (error, variables, context) => {
/* 오류 발생 시 처리 */
},
onSuccess: (data, variables, context) => {
/* 성공 시 처리 */
},
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
}
)
const countQueries = useQueries([
{
queryKey:["getApiFunction1",[]],
queryFn:()=>getApiFunction1(),
onSuccess:(data)=>{
console.log(data)
//성공 시 처리
} onError: (error, variables, context) => {
//에러 발생 시 처리
}
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
},
{
queryKey:["getApiFunction2",[]],
queryFn:()=>getApiFunction2(),
refetchInterval:3000,
onSuccess:(data)=>{
console.log(data)
}
},
...
])
//방법1
const mutation = useMutation((data) =>
axios.post('http://localhost:8000/user', data), {
onSuccess: () => {},
onError: () => {},
});
//방법2
const mutation = useMutation(mutationFn, {
onMutate: (variables) => {
/* 요청 직전 처리, 여기서 반환하는 값은 하단 함수들의 context로 사용됨 */
},
onError: (error, variables, context) => {
/* 오류 발생 시 처리 */
},
onSuccess: (data, variables, context) => {
/* 성공 시 처리 */
},
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
});
const {mutate, isLoading, isError} = mutation;
}
// handle function 적용
const handleSubmit = useCallback(
(data) => {
mutation.mutate(data);
},
[mutation],
)
//button
<button onClick={() => handleSubmit({id: userId, name: userName})}>유저 추가</button>
const {data} = useQuery('todos', fetchTodoList); //get
// output: todoList는 fetchTodoList의 결과값
const {data} = useMutation(postTodo); //post
// output: (API 콜이 성공하더라도) undefined 혹은 unknown
const postTodo = (todo) => {
axios.post('/api/data', { todo })
}
const mutation = useMutation(postTodo);
mutation .mutateAsync(todo).then((data) => {
console.log(data);
// putput: 서버의 response 값
});
//components
import Main from "pages/main-page";
import {QueryClientProvider, QueryClient, queryCache} from 'react-query'
export default function App() {
const queryClient = new QueryClient();
return (
<QueryClientProvider client={queryClient}>
<Main/>
</QueryClientProvider>
);
}
//방법1
import { useQuery } from 'react-query'
export default function App(){
const {
data, error, isFetching, isLoading, ...
} = useQuery('todos', getApiFunction1,{options ...})
console.log(data)
console.log(error)
//dependency Array를 사용해야하는 경우
const {
data, error, isFetching, isLoading, ...
} = useQuery(['todos', dependencyValue], getApiFunction1,{options ...})
}
//방법2
import { useQuery } from 'react-query'
export default function App() {
const [state1, setState1]=useState()
const num2 = 0
const countQueries = useQueries( //usequery
{
queryKey:["getApiFunction",[num2]], // 쿼리를 캐싱할 목적으로 사용하는 키.
queryFn:()=>getApiFunction(), // 쿼리 실행 함수들
onError: (error, variables, context) => {
/* 오류 발생 시 처리 */
},
onSuccess: (data, variables, context) => {
/* 성공 시 처리 */
},
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
}
)
const countQueries = useQueries([
{
queryKey:["getApiFunction1",[]],
queryFn:()=>getApiFunction1(),
onSuccess:(data)=>{
console.log(data)
//성공 시 처리
} onError: (error, variables, context) => {
//에러 발생 시 처리
}
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
},
{
queryKey:["getApiFunction2",[]],
queryFn:()=>getApiFunction2(),
refetchInterval:3000,
onSuccess:(data)=>{
console.log(data)
}
},
...
])
//방법1
const mutation = useMutation((data) =>
axios.post('http://localhost:8000/user', data), {
onSuccess: () => {},
onError: () => {},
});
//방법2
const mutation = useMutation(mutationFn, {
onMutate: (variables) => {
/* 요청 직전 처리, 여기서 반환하는 값은 하단 함수들의 context로 사용됨 */
},
onError: (error, variables, context) => {
/* 오류 발생 시 처리 */
},
onSuccess: (data, variables, context) => {
/* 성공 시 처리 */
},
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
});
const {mutate, isLoading, isError} = mutation;
}
// handle function 적용
const handleSubmit = useCallback(
(data) => {
mutation.mutate(data);
},
[mutation],
)
//button
<button onClick={() => handleSubmit({id: userId, name: userName})}>유저 추가</button>
const {data} = useQuery('todos', fetchTodoList); //get
// output: todoList는 fetchTodoList의 결과값
const {data} = useMutation(postTodo); //post
// output: (API 콜이 성공하더라도) undefined 혹은 unknown
const postTodo = (todo) => {
axios.post('/api/data', { todo })
}
const mutation = useMutation(postTodo);
mutation .mutateAsync(todo).then((data) => {
console.log(data);
// putput: 서버의 response 값
});
//components
import Main from "pages/main-page";
import {QueryClientProvider, QueryClient, queryCache} from 'react-query'
export default function App() {
const queryClient = new QueryClient();
return (
<QueryClientProvider client={queryClient}>
<Main/>
</QueryClientProvider>
);
}
//방법1
import { useQuery } from 'react-query'
export default function App(){
const {
data, error, isFetching, isLoading, ...
} = useQuery('todos', getApiFunction1,{options ...})
console.log(data)
console.log(error)
//dependency Array를 사용해야하는 경우
const {
data, error, isFetching, isLoading, ...
} = useQuery(['todos', dependencyValue], getApiFunction1,{options ...})
}
//방법2
import { useQuery } from 'react-query'
export default function App() {
const [state1, setState1]=useState()
const num2 = 0
const countQueries = useQueries( //usequery
{
queryKey:["getApiFunction",[num2]], // 쿼리를 캐싱할 목적으로 사용하는 키.
queryFn:()=>getApiFunction(), // 쿼리 실행 함수들
onError: (error, variables, context) => {
/* 오류 발생 시 처리 */
},
onSuccess: (data, variables, context) => {
/* 성공 시 처리 */
},
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
}
)
const countQueries = useQueries([
{
queryKey:["getApiFunction1",[]],
queryFn:()=>getApiFunction1(),
onSuccess:(data)=>{
console.log(data)
//성공 시 처리
} onError: (error, variables, context) => {
//에러 발생 시 처리
}
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
},
{
queryKey:["getApiFunction2",[]],
queryFn:()=>getApiFunction2(),
refetchInterval:3000,
onSuccess:(data)=>{
console.log(data)
}
},
...
])
//방법1
const mutation = useMutation((data) =>
axios.post('http://localhost:8000/user', data), {
onSuccess: () => {},
onError: () => {},
});
//방법2
const mutation = useMutation(mutationFn, {
onMutate: (variables) => {
/* 요청 직전 처리, 여기서 반환하는 값은 하단 함수들의 context로 사용됨 */
},
onError: (error, variables, context) => {
/* 오류 발생 시 처리 */
},
onSuccess: (data, variables, context) => {
/* 성공 시 처리 */
},
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
});
const {mutate, isLoading, isError} = mutation;
}
// handle function 적용
const handleSubmit = useCallback(
(data) => {
mutation.mutate(data);
},
[mutation],
)
//button
<button onClick={() => handleSubmit({id: userId, name: userName})}>유저 추가</button>
const {data} = useQuery('todos', fetchTodoList); //get
// output: todoList는 fetchTodoList의 결과값
const {data} = useMutation(postTodo); //post
// output: (API 콜이 성공하더라도) undefined 혹은 unknown
const postTodo = (todo) => {
axios.post('/api/data', { todo })
}
const mutation = useMutation(postTodo);
mutation .mutateAsync(todo).then((data) => {
console.log(data);
// putput: 서버의 response 값
});
//components
import Main from "pages/main-page";
import {QueryClientProvider, QueryClient, queryCache} from 'react-query'
export default function App() {
const queryClient = new QueryClient();
return (
<QueryClientProvider client={queryClient}>
<Main/>
</QueryClientProvider>
);
}
//방법1
import { useQuery } from 'react-query'
export default function App(){
const {
data, error, isFetching, isLoading, ...
} = useQuery('todos', getApiFunction1,{options ...})
console.log(data)
console.log(error)
//dependency Array를 사용해야하는 경우
const {
data, error, isFetching, isLoading, ...
} = useQuery(['todos', dependencyValue], getApiFunction1,{options ...})
}
//방법2
import { useQuery } from 'react-query'
export default function App() {
const [state1, setState1]=useState()
const num2 = 0
const countQueries = useQueries( //usequery
{
queryKey:["getApiFunction",[num2]], // 쿼리를 캐싱할 목적으로 사용하는 키.
queryFn:()=>getApiFunction(), // 쿼리 실행 함수들
onError: (error, variables, context) => {
/* 오류 발생 시 처리 */
},
onSuccess: (data, variables, context) => {
/* 성공 시 처리 */
},
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
}
)
const countQueries = useQueries([
{
queryKey:["getApiFunction1",[]],
queryFn:()=>getApiFunction1(),
onSuccess:(data)=>{
console.log(data)
//성공 시 처리
} onError: (error, variables, context) => {
//에러 발생 시 처리
}
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
},
{
queryKey:["getApiFunction2",[]],
queryFn:()=>getApiFunction2(),
refetchInterval:3000,
onSuccess:(data)=>{
console.log(data)
}
},
...
])
//방법1
const mutation = useMutation((data) =>
axios.post('http://localhost:8000/user', data), {
onSuccess: () => {},
onError: () => {},
});
//방법2
const mutation = useMutation(mutationFn, {
onMutate: (variables) => {
/* 요청 직전 처리, 여기서 반환하는 값은 하단 함수들의 context로 사용됨 */
},
onError: (error, variables, context) => {
/* 오류 발생 시 처리 */
},
onSuccess: (data, variables, context) => {
/* 성공 시 처리 */
},
onSettled: (data, error, variables, context) => {
/* 성공 여부와 관계없이 작업이 끝나면 처리 */
}
});
const {mutate, isLoading, isError} = mutation;
}
// handle function 적용
const handleSubmit = useCallback(
(data) => {
mutation.mutate(data);
},
[mutation],
)
//button
<button onClick={() => handleSubmit({id: userId, name: userName})}>유저 추가</button>
const {data} = useQuery('todos', fetchTodoList); //get
// output: todoList는 fetchTodoList의 결과값
const {data} = useMutation(postTodo); //post
// output: (API 콜이 성공하더라도) undefined 혹은 unknown
const postTodo = (todo) => {
axios.post('/api/data', { todo })
}
const mutation = useMutation(postTodo);
mutation .mutateAsync(todo).then((data) => {
console.log(data);
// putput: 서버의 response 값
});