vue

 

 

common.js

// 컴포지션 API의 reactive를 통해 생성할 수 있으며 오직 객체만 받습니다.
// reactive는 인자로 받은 객체와 완전히 동일한 프록시 객체를 반환하고,
// 생성된 객체는 Vue 2의 Vue.observable()로 생성한 것과 동일

//ref 객체는 원본 값을 value라는 속성에 담아두고 변경을 감시하는 객체이며,
//reactive는 원본 객체 자체에 변경을 감지하는 옵저버를 추가하여 그대로 반환한 값

//reactive 값을 ref 값으로 변환하는 toRefs
/**
 * 1. (value:원본값 )   형식 : ref
 * 2. (원본값 : __ob__) 형식  : reactive
 *
*/
import { reactive, computed, ref, toRefs } from 'vue';

const plusCalculator = () => {
    let state = reactive({
        num1: 0,
        num2: 0,
        result: computed(() => parseInt(state.num1) + parseInt(state.num2))
    });
    // toRefs 반응형 변수          
    return toRefs(state);
}

export {
    plusCalculator
}

 

API.vue

<template>
    <div>
        <h2>Calculator</h2>
        <div>
            <input type="number" v-model="num1" @keyup="plusNumbers" />
            <span> + </span>
            <input type="number" v-model="num2" @keyup="plusNumbers" />
            <span> = </span>
            <span>{{result}}</span>
        </div>
    </div>
</template>

<script>
    import {
        plusCalculator
    } from '@/common/common.js'

    export default {
        name: 'calculator',

        setup() {
            let { num1,num2,result} = plusCalculator();
            return {
                num1,num2,result
            }
        }

    }
</script>

 

 

 

about author

PHRASE

Level 60  라이트

Everyone to his taste. (각인 각색)

댓글 ( 4)

댓글 남기기

작성












vue 목록    more