inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념

질문있습니다!

212

감사합니다

작성한 질문수 13

1

두가지 질문있습니다

1. 현재 페이지가 a/b/3이고 a/b/5 페이지로 이동하고싶을 때, 즉 같은 컴포넌트 내에서 params 값만 바꾸어서 페이지를 변경하고 싶을땐 어떻게 해야되나요??

해당 페이지에서 this.$router.push나 replace로 params만 변경했더니 navigation duplicated 에러가 발생하거나 console에 특정 변수들을 찍어보면 이전 페이지에 대한 데이터 역시 같이 찍히게 됩니다.  

  mounted () {
    document.addEventListener('keypress', (e=> { if (e.keyCode === 97) { this.console(); } });
}

(위와 같이 a버튼을 눌럿을 때, 콘솔에 찍히게 만들었는데 이때 이전 페이지에 있던 내용 역시 같이 찍히게 됩니다.)

사용한 함수는 아래입니다. (_randomKey가 있든 없든 제대로 동작하지 않습니다..)

nexts () {
      return this.$router.replace({ name: 'Components'params: { id: this.next }, _randomKey: Date.now() }).catch(err => console.log(err));
   }

vue-route 공식문서에는 같은 컴포넌트 내에서 params만 바뀔땐 beforeRouteUpdate를 사용하라는 것을 보았는데, 단순하게 

    beforeRouteUpdate (tofromnext) {
      console.log(to);
      console.log(from);
   }

위처럼만 해도 console에 찍히지가 않아서 이걸 쓰는게 맞는건지 잘 모르겠습니다..

어떤 방법으로 해결해야 될까요??

2. 어떤 태그 하나에 대해서 클릭과 키 프레스 이벤트를 동시에 실행하고 싶은데 

<v-btn @click="a" @keypress.enter="b"> 

로 했더니 keypress에 대한 이벤트가 동작하지 않습니다.

이럴땐 document.addEventListener를 이용하는 방법밖엔 없는건가요??

vuejs javascript

답변 1

0

캡틴판교

안녕하세요 ㅁㄴㅇㄼㅈㄷㄱ님,

답변이 늦어져서 죄송합니다 :)

1. 페이지 URL 정보가 바뀌면 라우터의 네비게이션 가드 또는 컴포넌트 내의 watch: { $route() {} }  코드를 이용하여 변화를 감지한 후 로직을 실행하실 수 있을 겁니다. keypress 이벤트가 남아 있는 부분은 페이지를 이동하기 전에 이벤트 리스너를 제대로 제거 했는지 한번 확인해 주시면 좋을 것 같아요.

2. 뷰 디렉티브를 이용한 이벤트 제어는 아래와 같이 여러개도 가능합니다.

<input @click @keypress @mousever ...>

다만, 위의 예시로 든 버튼 요소에는 Vue.js를 떠나서 기본적으로 키보드 이벤트를 제어하지 못할 것 같습니다. 브라우저 입장에서는 인풋 요소에만 키보드 이벤트를 받을 수 있게끔 설계된 것으로 알고 있으니 HTML 요소 별로 어떤 이벤트를 사용할 수 있는지 먼저 확인해 보시면 좋을 것 같습니다 :)

수강해 주셔서 감사합니다

깃 권한 요청 드립니다

0

50

1

깃 권한 신청

0

50

1

깃 권한 요청드립니다.

0

111

1

깃허브 권한 요청 드립니다

0

144

1

깃허브 권한 요청 드립니다

0

161

1

깃허브 권한 요청 드립니다

0

167

1

깃허브 권한 요청 드립니다.

0

154

1

안녕하세요 vue 2.7로 수강하고 있는 학생입니다. 실무에서 최하위 자식의 props와 watch의 관계를 여쭈고자 합니다.

0

208

1

ide 타입추론 기능 사용할 수 없을까요??

0

207

1

컴포넌트 링크는 vue peek 익스텐션 설치가 필수인가요??

0

228

1

Vue3로 진행중입니다

1

338

1

Vue router-link 사용시 같은 url이면

1

506

1

vue3 에러 메세지...

1

670

2

id ="app" 중복

0

271

2

use undefined 에러가 나옵니다.

1

318

2

깃허브 권한 요청드립니다.

1

358

2

권한요청드립니다.

1

299

2

Vue3에서 구글 애드센스 탑재하기

1

437

2

코드가 정상 작동 되는건지 ...

1

303

1

강의에서 api를 따로 빼셨는데 얻는 이점이 뭐죠?

1

243

1

vuex 적용시 질문

1

288

2

라우터 버전이 안맞는데 어떤걸 써야하나요

1

384

2

UserView에 id 속성만 undefined로 넘어오는데 이유를 모르겠습니다..

1

455

2

권한요청 드립니다!

1

274

2