Code Monkey home page Code Monkey logo

group-artist-fan-letter-box-2's People

Contributors

baram55 avatar

Watchers

 avatar

group-artist-fan-letter-box-2's Issues

김명환님 코드리뷰

명환님 redux thunk 가 어려우셨나봅니다 사용을 안해주셨네욤.

try {
response = await axios.post(`${process.env.REACT_APP_SERVER_URL}/login`, {
id,
password,
});
} catch (error) {
toast.error(error.code); //NOTE - 에러 코드 처리하기
return;
}
const {
userId: receivedId,
nickname: receivedNickname,
avatar: receivedAvatar,
success: isSuccess,
accessToken,
} = response.data;
if (isSuccess) {
dispatch(logIn());
localStorage.setItem("accessToken", accessToken);
localStorage.setItem("id", receivedId);
localStorage.setItem("nickname", receivedNickname);
localStorage.setItem("avatar", receivedAvatar);
toast.success("로그인에 성공하였습니다.");
navigate("/");
return;
} else {
toast.error("로그인에 실패했습니다.");
return;
}

사실 이 부분 전체가 redux + thunk 로 들어갔었어야 해요.
리덕스에서 비동기를 관리하는 부분을 다시 한 번 봐볼필요가 있을듯 싶습니다.

response = await axios.post(`${process.env.REACT_APP_SERVER_URL}/login`, {

여기서 구조분해할당으로 {data} 로 받아오는게 더 좋아보여요.

localStorage.setItem("accessToken", accessToken);
localStorage.setItem("id", receivedId);
localStorage.setItem("nickname", receivedNickname);
localStorage.setItem("avatar", receivedAvatar);
toast.success("로그인에 성공하였습니다.");

이 부분은 util 함수로 빼내어서 관리해줘도 좋을 것 같아요.

response = await axios.post(

axios 를 바로 가져다 사용하는 것 보다 axios 인스턴스를 만들어서 핸들링하는게 더 좋습니다.

axios create 를 이용해서 특정 인스턴스를 생성해서 해보세요!

const [id, setId] = useState("");
const [password, setPassword] = useState("");
const [nickname, setNickname] = useState("");

폼을 이용하고 있을때에는 state 를 이용하는 것 보다는, 비제어 형식으로 사용해도 좋을 것 같아요. input 시 마다 불필요한 렌더링을 굳이 해줄필요는 없을 것 같습니다.

const getUserInfo = async () => {
let response;
const accessToken = localStorage.getItem("accessToken");
try {
response = await axios.get(`${process.env.REACT_APP_SERVER_URL}/user`, {
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`,
},
});
} catch (error) {
toast.error(error.code);
}
const { id, nickname, avatar, success: isSuccess } = response.data;
if (isSuccess) {
setId(id);
setNickname(nickname);
setAvatar(avatar);
}

try catch 를 잡을때에 전체적인 로직을 다 묶어주어도괜찮습니다.
response 를 위에 선언해서 사용하지 않고 try catch 블록 안으로 넣어도 좋아보입니다.

formData.append("avatar", avatar);
formData.append("nickname", editingNickname);
response = await axios.patch(
`${process.env.REACT_APP_SERVER_URL}/profile`,
formData,
{
headers: {
"Content-Type": "multipart/form-data",
Authorization: `Bearer ${accessToken}`,
},

이런 비지니스 로직등을 분리해서 묶어주는게 더 좋을 것 같아요. 분리도가 떨어지니 코드가 길어지고 가독성도 떨어집니다. 이제 함수 분리하는 연습을 해보시는게 좋아요여요

명환님 async 에 대한 이해도가 많이 떨어지시지는 않는것 같아요. thunk 에 대한 부분은 가볍게 짚고 넘어가고 react query 쪽을 확실히 잡아가보면 좋을 것 같아요!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.