hgyeom / React-lv5-MyApp

https://react-lv4-my-app.vercel.app
0 stars 0 forks source link

Feedback #5

Open wildCodingWarrior opened 1 year ago

wildCodingWarrior commented 1 year ago

Overview

wildCodingWarrior commented 1 year ago

etc

https://github.com/hgyeom/React-lv5-MyApp/blob/10b2a05c0e46a18c2ea3e25bc4bcc30dda853be2/src/GlobalStyle.js#L2-L7

이 부분은 styled-reset을 사용하시면 더 간결하겠네요.

https://github.com/hgyeom/React-lv5-MyApp/blob/10b2a05c0e46a18c2ea3e25bc4bcc30dda853be2/src/api/posts.js#L1-L36

이 부분은 axios.create를 이용해서 공통 base가 되는 axios를 만들어 관리하는 편이 좋겠습니다.

또 리덕스는 사용 안하는 것 같은데, 지워도 괜찮을 것 같아요.

usePostQueries, usePost라는 이름의 custom hook을 만들어서 query, mutation 부분을 따로 관리하는 방식으로 logic을 더 간결화 할 수 있지 않을까 생각합니다. 충분히 가능하실거에요. 아래는 todos로 만들어본 예시 코드입니다.

export const useTodos = () => {
    const {data: todos} = useQuery("todos", fetchTodos);
    const queryClient = useQueryClient();

    const addTodo = useMutation(addTodo, {
        onSuccess: () => {
            queryClient.invalidateQueries("todos");
        },
    });

    const deleteTodo = useMutation(deleteTodo, {
        onSuccess: () => {
            queryClient.invalidateQueries("todos");
        },
        });

    const updateTodo = useMutation(updateTodo, {
        onSuccess: () => {
            queryClient.invalidateQueries("todos");
        },
        })

    return {todos, addTodo, deleteTodo, updateTodo }
};