vue에서 리셋 함수를 사용하면this 호출이 잘못되었습니다.

2738 단어 vue리셋 함수this
let self =this//this가 잘못되지 않도록 새 변수를 사용하십시오
//updateStudentInfoToServer는 자체 부분의 데이터를 비동기적으로 업로드하는 인터페이스로 세 개의 매개 변수를 수신하는데 그 중에서 첫 번째는 데이터이고 두 번째, 세 번째는 함수이며 두 번째, 세 번째 함수는 function(){} 형식으로 쓴다

updateStudentInfoToServer:function(data, networkOk, networkError){
 let postData = this.$qs.stringify({
  data:data
 })
 
 this.axios.post('/api/update/updateStudentInfo',
  postData
 ).then(res=>{
  console.log(' return : ')
  console.log(res)
  networkOk(res) // 
 
 }).catch(error=>{
  console.log(error)
  networkError(error) // 
 }) 
 
 console.log('axios done')
}, 
 
this.updateStudentInfoToServer(data, function(res){
  console.log('return ok')
  console.log(res)
  // console.log('self')
  // console.log(self) // this
  // console.log('this')
  // console.log(this) //undefined
 
  self.handleCancelEdit()
 },function(error){
  console.log(error)
 }
 
)
네트워크 데이터를 제출하는 것은 비동기적으로 호출되기 때문에 먼저 되돌아온 후에야 성공하고 실패한 리셋을 실행할 수 있습니다.
이런 쓰기 방식,function의 역할은function의 코드 블록에서this를 사용하여 vue 데이터에 설정된 변수를 변경할 수 없음을 결정합니다
es6의 화살표 문법을 사용하면this의 어디서나 호출할 수 있습니다

this.updateStudentInfoToServer(this, res=>{
  console.log('return ok')
  console.log(res)
  console.log('self')
  console.log(self)
  console.log('this')
 
  console.log(this)//this self 
 
 }, error=>{
  console.log(error)
 }
)
그러나 일부 브라우저의 일부 버전은 es6의 문법을 지원하지 않기 때문에 여러 가지 문제를 초래할 수 있습니다
보충 지식: vue는 전역 함수에 리셋하고 vue 파일의 함수를 호출합니다
전역 함수는 파일 globalFunc를 작성할 수 있습니다.js

exports.install = function(Vue, option){
 Vue.prototype.setData = function(that, key){
 that[key] = '222'
 }
 
 Vue.prototype.testCallMe = function(str){
 console.log('test call me' + str)
 }
 
 Vue.prototype.testCallBack = function(func, param){
 func(param)
 this.testCallMe('tetetet')
 }
}
main.js
import globalFunc from '@/components/globalFunc'
Vue.use(globalFunc)
vue 파일
호출
this.testCallBack(this.test,'yui0')//전역 함수를 사용하여 vue 파일의 함수를 호출하고 vue 파일의 데이터를 수정합니다.
this.setData(this,'msg')//전역 함수로 vue 파일의 데이터 수정
test 함수 작성

test:function(str){
 this.msg = '233' + str
}, 
이상의 이 편은 vue에서 리셋 함수를 사용합니다.this 호출이 무효한 해결은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주십시오.

좋은 웹페이지 즐겨찾기