Vuejs 구성 요소의 메소드 섹션에서 람다 식을 사용하고 있습니다.Vuejs Arrow 두 번째 구문을 트리거하지 않는 함수
예는 입니다. 나는 alertyou()
을 트리거하고 경고 메시지가 나타나면 확인을 클릭하십시오. 그런 다음 vue 개발자 도구에서 나는 this.activated
이 true
이됩니다.
export default {
name: 'HelloWorld',
data() {
return {
msg: 'Welcome to Your Vue.js App',
activated: false
}
},
methods: {
alertme:() => { alert('Clicked'); this.activated = false; },
alertyou() {
alert('Alert You');
this.activated = true
}
}
}
그러나, 나는이 alertme
람다를 트리거 버튼을 클릭합니다. 경고 메시지가 나타나면 확인을 클릭하십시오. 하지만 그때이. 활성화 된 상태가 유지됩니다!
여기에 무슨 일이 벌어지고있는 것이 람다의 한계입니까? 람다 당 하나의 문장 만 트리거 할 수 있습니까? 또는 경고가 발령되면 범위를 처리해야합니까?
아니요, 화살표 기능은 하나의 명령문 만 포함하도록 제한되지 않습니다. console.log에 대한 경고를 변경하고 다시 테스트하십시오. 경고를 사용하지 마십시오. 차단 문입니다. – WaldemarIce
@WaldemarIce'alert'는 실행되는 것을 차단하지 않습니다. 문제는 화살표 함수를 사용하면 'this'를 Vue 인스턴스가 아닌 부모 범위에 바인딩한다는 것입니다. 그는'alertme'을 정규 함수로 정의해야합니다 (또는'alertyou'와 같이 사용하는 것처럼). 그는 'this'에 명시 적으로 바인딩 할 필요가 없습니다. – thanksd
@thanksd 위의 의견을 읽으십시오. 나는 그가 문제가있는 곳을 안다. 그리고 당신은 잘못입니다, 경고 코드를 차단 성명입니다. 이것을 호출하면 코드 실행이 문자 그대로 일시 중지됩니다. – WaldemarIce