Vue.js 컴포넌트를 정의하던 중, 컴포넌트 내에 method에서 컴포넌트의 다른 메소드와 data의 값을 참조하려니 다음과 같은 오류가 떴다.
Uncaught TypeError: Cannot read property of undefined
위의 문제는 여러 문제가 있을 수 있겠으나, 대부분은 ES6의 Arrow function을 써서 생기는 문제이다.
나의 경우 querySearch라는 method를 아래와 같은 방법으로 써서 생긴 문제였다.
methods: { querySearch: (queryString, cb) => { .... } }
위 코드를
methods: { querySearch: function(queryString, cb) { .... } }
Arrow function을 자바스크립트 함수선언으로 바꾸니 오류가 사라졌다.
공식 레퍼런스에 따르면 원인은, Arrow function(화살표 함수)들은 부모 컨텍스트에 바인딩이 되기때문에,
this로 참조하는 Vue 컴포넌트의 인스턴스에서는 접근할 수 없다고 한다.
+ 현재 Vue.js 한글문서에서는 이에 대한 언급이 없어서 번역후 PR날릴 예정. ㅎㅎㅎ~~
'개발 > Vue.js' 카테고리의 다른 글
Nuxt.js 에서 동적 route시 트랜지션 안되는 문제 해결 (0) | 2018.12.03 |
---|---|
SPA(Vue.js, Angular, React) 소셜로그인 흐름도 (1) | 2018.11.06 |