컴포넌트에 대한 깔끔한 형태로 해 준
setup 저거 가져올려면 ref 가져와야 함.
저렇게 뭔가 js로 쫙 해놓은 다음에
return안에다 객체형식으로 해서 다 컴포넌트에 사용할 수 있게 넘길 수 있음.
저 예시는 너무 많고,
컴포지션 API는 쉽게 말해서 보통 js처럼 변수나, 함수 만들고,
return을 통해서 그걸 원래 vue의 data()나 methods: 처럼 사용할 수 있게 됨.
참고로, 저 컴포지션 api 해서 만든 변수들은 반응형이 아님.
그래서 반응형으로 만들려면 ref()로 감싸줘야 하고,
그 변수의 값을 이용하려면 변수.value 해서 사용하면 됨.
컴포지션에서 변수는 const로 선언하고 ref로 감싸고 접근할 때는 .value 해서 접근해야 함.
ref는 vue로부터 import 해 와야 함.
import 해올 때, 꼭 객체형식으로 씌우면서 가져와야 함.
뭔가 복잡한 계산식이 필요한 메소드같은 거 필요하면 이걸로도 할만 함.
그리고 저런 식으로 관련있는 것들끼리 가까이 두는 듯.
count와 increase처럼
참고로,
이렇게 computed로 되어 있는 걸 만들고 싶다면,
이런 식으로 콜백함수로 만들어야 한다.
저 computed 메소드는
ref 처럼 view에서 가져와야 한다.
컴포지션 API에서 watch를 쓰고 싶다면,
이런 걸 하고 싶다면,
마찬가지로 view에서 watch를 가져오고,
이렇게 하면 된다.
watch(감지할데이터, (변경된데이터)=>{})
이렇게 콜백 넣으면 자동으로 들어가 진다.
create(), mounted() 등 생명주기와 관련된 것을 컴포지션 API에서 쓰고 싶다고 한다면,
먼저 mounted()는,
onMounted(콜백())
하면된다.
그럼 created()는?
따로 없다.
그냥 저 setup(), 즉 컴포지션 안 자체가 created 영역이라고 보면 된다.
그럼 props나 부모컴포넌트가 준 속성을 이용하고 싶다면..?
이거는 setup()안, 즉 컴포지션 API 안에다 만들 수 없다.
밖으로부터 받아오는 거기 때문에..
이렇게 인자로 받아야 한다.
context는 부모 컴포넌트가 지정해준 속성들이 있는 곳 같다.
저기에 emit도 있고, 여러 기타 속성들, 뭐 style도 있을 수 있겠고.
'Vue.js' 카테고리의 다른 글
Refs 요소나 컴포넌트를 참조 (0) | 2023.10.19 |
---|---|
Provide, Inject 데이터를 자손 컴포넌트 까지 전달 (0) | 2023.10.18 |
Emit (0) | 2023.10.13 |
최상위 요소(최상위 엘레멘트) (0) | 2023.10.13 |
slot (0) | 2023.10.13 |