인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김영현님의 프로필 이미지
김영현

작성한 질문수

프로젝트로 배우는 Vue.js 3

useContext가 deprecated 경고가 나오는데 대신 쓸수있는게 있나요?

작성

·

196

0

강의중 나오는 useContext를 이용해 emit을 가져오는 코드가 

<script>
import { useContext } from 'vue';
export default {    
    setup() {
        const { emit } = useContext();
        const onClick = (page=> {
            emit('click'page)
       };
        return {
            onClick
        }
    }

}
</script>

크롬 콘솔창에서 경고가 아래와 같이 나오네요

runtime-core.esm-bundler.js?5c40:38 [Vue warn]: `useContext()` has been deprecated and will be removed in the next minor release. Use `useSlots()` and `useAttrs()` instead. 

useContext()이 deprecated 된다고 나오는데 useContext대신 useSlots(), useAttrs()을 어떻게 활용해야는지 궁금합니다.

답변 1

0

코지 코더님의 프로필 이미지
코지 코더
지식공유자

useContext가 Deprecated가 되네요

setup(props, {emit}) 이렇게 쓰시거나

useContext 부분에 getCurrentInstance를 사용하시면 되네요

<script>
import { getCurrentInstance } from 'vue';
export default {
    props: {
        numberOfPages: {
            type: Number,
            required: true
        },
        currentPage: {
            type: Number,
            required: true
        }
    },
    emits: ['click'],
    setup() {
        const { emit } = getCurrentInstance();
        const onClick = (page) => {
            emit('click', page)
        };

        return {
            onClick
        }
    }
}
</script>
김영현님의 프로필 이미지
김영현

작성한 질문수

질문하기