Vuex에서 회원가입 하면 로그인 컴포넌트 불러오는 방법.

2023. 5. 16. 10:28· Vue
 async registUser() {
      if (
        (this.user_id === "" ||
          this.user_pass === "" ||
          this.user_name === "" ||
          this.user_age === "" ||
          this.user_phone_number === "",
        this.user_athletic_career === "")
      ) {
        alert("모든 내용을 입력해주세요");
      } else {
        const user = {
          user_id: this.user_id,
          user_pass: this.user_pass,
          user_name: this.user_name,
          user_age: this.user_age,
          user_phone_number: this.user_phone_number,
          user_athletic_career: this.user_athletic_career,
          user_profile_img: this.user_profile_img,
        };
        await this.$store.dispatch("registUser", user);
      }
    },

회원가입.vue에서 만들어놓은 로직이다.

 

모든 내용이 입력됐으면 user객체를 생성해서 vuex의 actions로 registUser 요청을 보낸다.(user 객체를 담아서)

 

async registUser({ commit }, user) {
      console.log(user);
      await axios({
        url: "http://localhost:9999/user/signup",
        method: "POST",
        params: user,
      })
        .then(() => {
          alert(`가입에 성공하셨습니다. 
                로그인을 부탁드립니다.`);
          commit("CREATE_USER", user);
        })
        .catch((err) => {
          console.log(err);
          alert("가입에 실패하셨습니다.");
        });
    },

그러면 actions에서 얘가 받게 되는데 내가 의도했던 방법은 회원가입이 성공하면 로그인 창을 불러오는 방법이었다.

 

기존 .vue에서는 this.$router.push({name:"컴포넌트 이름"}) 이 코드를 사용해서 컴포넌트를 불렀지만

vuex에서는 이 코드를 사용하니 push를 찾을 수 없다는 에러가 발생했다.

 

문제를 해결하기 위해서 vuex 맨 위에 

import router from "@/router";

router를 import 진행해주고

async registUser({ commit }, user) {
      console.log(user);
      await axios({
        url: "http://localhost:9999/user/signup",
        method: "POST",
        params: user,
      })
        .then(() => {
          alert(`가입에 성공하셨습니다. 
                로그인을 부탁드립니다.`);
          commit("CREATE_USER", user);
          router.push({ name: 'Login' });
        })
        .catch((err) => {
          console.log(err);
          alert("가입에 실패하셨습니다.");
        });
    },

 위 코드처럼 router.push로 바로 접근해서 사용하면 정상적으로 처리가 된다.

반응형

'Vue' 카테고리의 다른 글

Vuex state 데이터 새로고침으로부터 지키는 방법  (1) 2024.04.01
오랜만에 해보는 Vuex 도입  (1) 2024.04.01
Vuex에서 새로고침 시 store 초기화 막는 방법  (0) 2023.05.17
vue에서 API_KEY 설정하는 방법  (0) 2023.05.16
'Vue' 카테고리의 다른 글
  • Vuex state 데이터 새로고침으로부터 지키는 방법
  • 오랜만에 해보는 Vuex 도입
  • Vuex에서 새로고침 시 store 초기화 막는 방법
  • vue에서 API_KEY 설정하는 방법
indeep
indeep
백준 - https://www.acmicpc.net/user/esu08259 깃허브 - https://github.com/qkrrlgus114
indeep
불편한 게 싫어
indeep
글쓰기방명록관리자
전체
오늘
어제
  • 분류 전체보기 (180)
    • 알고리즘문제 (11)
      • 백준 (10)
      • swea (1)
    • CS지식 (27)
      • HTTP 웹 지식 (4)
    • 일상 (1)
    • 스프링 강의(인프런) (4)
    • JAVA 강의(인프런) (11)
    • JAVA (8)
    • 오류해결 (31)
    • Vue (5)
    • 싸피 (4)
    • 스프링 개념 (2)
    • git 관련 (1)
    • 면접 (4)
    • 기타 (14)
    • 프로젝트 (45)
      • RESTAPI 추천 서비스 (34)
      • 씈크럼 프로젝트 (11)
    • 독서 (3)
    • 행사 || 컨퍼런스 (4)
    • 회고 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

hELLO · Designed By 정상우.v4.2.2
indeep
Vuex에서 회원가입 하면 로그인 컴포넌트 불러오는 방법.
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.