본문 바로가기
FRONT/VUE

[vue3] 자바스크립트 객체 복사/비교

by mangttu 2024. 4. 24.

● 객체 복사/비교

더보기
const getTodo = async() => {
          try {
            const res = await axios.get('http://localhost:3000/todos/' + id)
            todo.value = { ...res.data };
            originalTodo.value = { ...res.data };
            loading.value = false;
          }catch(err){
            triggerToast('Something went wrong', 'danger');  
          }
        }
        getTodo();

값을 get으로 가져오고

todo 라는 값안에 = { ...res.data }; 

[spread operate 으로 객체를 벗겨 다시 넣어줌,]

=> 값을 복사해준다.

 

originalTodo 라는 값안에 = { ...res.data };

=>   값을 복사해준다.

 

input 의 값이 변경되면 

// _loadash, 주소값 동일한지 찾기
        const todoUpdated = computed(()=> {
            return !_.isEqual(todo.value, originalTodo.value)
        })

 

[lodash라는 라이브러리]를 이용하여

!_.isEqual( todo.value, orginialTodo.value) 값을 비교 할 수 있다.

주소값을 비교하게됨.

 

만약에 해당 값이 같지 않을경우 

<button
        type="submit"
        class="btn btn-primary"
        :disabled="!todoUpdated"
    >
        Save
    </button>

 

disabled를 반대로 처리하여 만약 같을경우 disabled 처리하고, 아닐경우 풀리게 설정한다.

todo.value의 값은 수정하면 값이 계속 변경되기 떄문에 originalTodo 와의 값이 일치할 수 없다.

 

'FRONT > VUE' 카테고리의 다른 글

[vue3] teleport, slot 사용법  (0) 2024.04.24
[vue3] 라이프사이클 생명주기  (0) 2024.04.24
[vue3] 이벤트 버블링 이란?  (0) 2024.04.24
[vue3] router-view 사용법  (0) 2024.04.23
[vue3] computed, watchEffect, Watch 사용법  (0) 2024.04.23