Vue2から3への以降でmixinをComposableにしていく時、そのまま置換するとComposableからemitしたくなる
一応emitを引数に渡せばできる
export default function useTest(emit: Function) {
return {
clicked() {
// いろいろ処理
emit("clicked", "arg1")
}
}
}
OptionsAPI
<script>
export default {
onClick() {
const {clicked} = useTest(this.$emit);
clicked();
}
}
</script>
CompositionAPI
<scipt setup lang="ts">
const emit = defineEmits();
const {clicked} = useTest(emit);
function onClick() {
clicked();
}
</script>
でもこれだと定義したemit以外も呼べるので,機能だけ呼んでemitはコンポーネントでやるほうが良い
<scipt setup lang="ts">
const emit = defineEmits(["clicked"]);
const {clicked} = useTest();
function onClick() {
clicked();
emit("clicked");
}
</script>