vue(2.x) 응답식 수정 데이터(대상, 수조) 및 난점(갱)

2308 단어 VUE
배경.
1. Vue는 객체 속성의 추가, 삭제를 감지할 수 없습니다(단, 객체에 직접 값을 재지정하거나 객체 또는 내부 객체의 속성을 수정할 수 있습니다).
2. Vue는 그룹의 항목 수정을 감지할 수 없음 (index에 따라),length 수정 (단지 이것일 뿐, 필터,map,concat,slice 등 방식으로 새로운 그룹의 값을 직접 부여할 수 있음)
 
대상
1. $set、set、$delete、delete
// $set Vue.set   
this.$set(this.obj, k, v)
Vue.set(this.obj, k, v)

this.$delete(this.obj, k)
Vue.delete(this.obj, k)

2. assign
 
배열
1. $set、set、$delete、delete
대상의 첫 번째 방식과 마찬가지로 대상을 수조로 바꾸고 키 (k) 를 아래 첨자 (index) 로 바꿉니다.
2. 배열 작업 함수 사용(사실 Vue에서 수정됨)
    splice(),
    push(), pop(),
    shift(), unshift(),
    sort(), reverse()
 
난점(구덩이):
1. vue 실례나 vue 구성 요소(this,this.$data)에 정의되지 않은 속성을 추가할 수 없습니다
2. 대상, 그룹을 set할 때value는 복잡한 데이터 구조로 할 수 있고vue는 귀속을 진행하여 이를 모두reactive의 데이터로 전환할 수 있다. 예를 들어 다음과 같다.
this.$set(this.texts, 0, [
  [1,2],
  [3,4],
  {name: 'XiaoMing'}
])

3. v-model에 귀속된 데이터는 LHS가 필요하지만 RHS(item 및 &, |, =, (,), 쌍안 등 연산자를 RHS로 되돌려줄 수 없다. 예를 들어 다음과 같다.
// texts: [1,2,3]

//   , item RHS


//   


//   


//   



//   

4. 컴퓨터는 데이터에 있는 데이터(또는 대상의 속성, 그룹의 항목)를 귀속시켜야 한다. 그렇지 않으면 응답식 업데이트를 할 수 없다. 특히 귀속초기에 존재하지 않았던 데이터를 귀속할 때 다음과 같이 주의해야 한다.
computed: {

    //   
    prop () {
      if(!this.obj.data) return {}
      return this.obj.data
    }

    //   ,  Vue.set Object.assign  
    prop () {
      if(!this.obj.data) this.$set(this.obj, data, {}})
      return this.obj.data
    }

    //   
    prop () {
      if(!this.obj.arr) return []
      return this.obj.arr
    }

    //   
    prop () {
      if(!this.obj.arr) this.$set(this.obj, arr, []})
      return this.obj.arr
    }
}

 
구독, 좋아요를 환영합니다.

좋은 웹페이지 즐겨찾기