Vue: [2.0] κΈ°λŠ₯ ꡬ성 μš”μ†Œμ— λŒ€ν•œ ν…œν”Œλ¦Ώ

에 λ§Œλ“  2016λ…„ 10μ›” 18일  Β·  34μ½”λ©˜νŠΈ  Β·  좜처: vuejs/vue

ν‘œμ€€ ꡬ성 μš”μ†Œμ™€ λ™μΌν•œ λ°©μ‹μœΌλ‘œ κΈ°λŠ₯ ꡬ성 μš”μ†Œμ— λŒ€ν•œ ν…œν”Œλ¦Ώ 및 .vue νŒŒμΌμ„ μž‘μ„±ν•  수 있기λ₯Ό μ›ν•©λ‹ˆλ‹€.

이 λ°”μ΄μ˜¬λ¦° μ—μ„œ κ°œλ… 증λͺ…을 λ§Œλ“€μ—ˆμ§€ 만 κ½€ ν•΄ν‚€ν•©λ‹ˆλ‹€. ν…œν”Œλ¦Ώ μ»΄νŒŒμΌλŸ¬λŠ” κ²°κ³Ό ν•¨μˆ˜λ₯Ό this μ•„λ‹Œ context κ°œμ²΄μ— 더 μ ν•©ν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ functional μ˜΅μ…˜μ„ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 보일 κ²ƒμž…λ‹ˆλ‹€.

Vue.component('test', {
  functional: true',
  props: ['msg'],
  template: `<div>
    <h1>{{props.msg}}</h1>
    <h2>Static content</h2>
    <span v-for="n in 10">{{n}} </span>
    <button @click="console.log('click', props.msg)"><slot></slot></button>
  </div>`,
});

λ˜λŠ”:

<template>
  <div class="test">
    <h1>{{props.msg}}</h1>
    <h2>Static content</h2>
    <span v-for="n in 10">{{n}} </span>
    <button @click="console.log('click', props.msg)"><slot></slot></button>
  </div>
</template>

<script>
export default {
  functional: true,
  props: ['msg'],
}
</script>

<style scoped>
.test {
  margin: 12;
}
</style>
feature request

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

곧 μΆœμ‹œλ  μ˜ˆμ •μž…λ‹ˆλ‹€.

λͺ¨λ“  34 λŒ“κΈ€

μš°λ¦¬λŠ” 이미 이것을 λ‘œλ“œλ§΅μ— μ˜΅μ…˜μœΌλ‘œ 가지고 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” 2.0이 ν˜„μž¬ μΆœμ‹œ ν›„ 단계λ₯Ό λ²—μ–΄λ‚˜κ³  2.0에 λŒ€ν•œ μƒνƒœκ³„μ— 남겨진 λͺ¨λ“  μž‘μ—…μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ 이λ₯Ό μ—°κΈ°ν•  κ²ƒμž…λ‹ˆλ‹€. , vue-loader/vueifyκ°€ 그것과 ν•¨κ»˜ μž‘λ™ν•˜κ²Œ λ§Œλ“œλŠ” 것 λ“± pp.)

PoC κ°μ‚¬ν•©λ‹ˆλ‹€. 도움이 될 것 κ°™μŠ΅λ‹ˆλ‹€!

예, λΆ€νƒν•©λ‹ˆλ‹€.
λ°”λ‘œ 그것을 바라보고 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜μ—κ²Œ λ Œλ” κΈ°λŠ₯은 λ„ˆλ¬΄ 압도적이며 단일 파일 ꡬ성 μš”μ†Œμ˜ μ „λ°˜μ μΈ λŠλ‚Œμ—μ„œ "λŠκ»΄μ§‘λ‹ˆλ‹€".

λ‚˜μ—κ²Œ κ°€μž₯ μœ μš©ν•œ 것은 CSS의 λ²”μœ„λ₯Ό κΈ°λŠ₯적 ꡬ성 μš”μ†Œλ‘œ μ§€μ •ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

이 κΈ°λŠ₯적인 단일 파일 ꡬ성 μš”μ†Œμ— λŒ€ν•œ μƒνƒœ μ—…λ°μ΄νŠΈλ₯Ό 받을 수 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” Reactμ—μ„œ μ™”μœΌλ©° 이것을 κ½€ λ†“μΉ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

곧 μΆœμ‹œλ  μ˜ˆμ •μž…λ‹ˆλ‹€.

n00b에 λŒ€ν•΄ μš°λ¦¬κ°€ μ§€κΈˆ 가지고 μžˆλŠ” 것과 λΉ„κ΅ν•˜μ—¬ μ΄κ²ƒμ˜ μƒˆλ‘œμš΄ 점을 μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

λ‹€μŒκ³Ό 같이 .vue νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ κΈ°λŠ₯적 ꡬ성 μš”μ†Œλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

<template functional>
  <div class="test">
    <h1>{{props.msg}}</h1>
    <h2>Static content</h2>
    <span v-for="n in 10">{{n}} </span>
    <button @click="console.log('click', props.msg)"><slot></slot></button>
  </div>
</template>

<script>
export default {
  props: ['msg'],
}
</script>

<style scoped>
.test {
  margin: 12;
}
</style>

μ•„ κ·Έλ ‡κ΅°μš” κ°μ‚¬ν•©λ‹ˆλ‹€!!

정말 μ’‹μ•„λ³΄μ΄λ„€μš”. 이 κΈ°λŠ₯이 μ–Έμ œ μΆœμ‹œλ μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆκΉŒ?

μ΄λ ‡κ²Œ ν•˜λ©΄ κΈ°λŠ₯적 ꡬ성 μš”μ†Œλ₯Ό 훨씬 더 μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

이 μ£Όμ œμ— λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? 2.3 릴리슀의 일뢀가 λ κΉŒμš”?

@Akryum 이 문제의 상황을 μ•Œκ³  μžˆμŠ΅λ‹ˆκΉŒ? λͺ‡ κ°œμ›” λ™μ•ˆ 침체에 빠진 것 κ°™μŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μš°λ¦¬κ°€ ν•  수 μžˆλŠ” 일이 μžˆμŠ΅λ‹ˆκΉŒ?

/ping @blake-newman

이 κΈ°λŠ₯에 λŒ€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆκΉŒ?

2월에 이에 λŒ€ν•œ μž‘μ—…μ΄ μ‹œμž‘λœ 것 κ°™μŠ΅λ‹ˆλ‹€: https://github.com/vuejs/vue/tree/feature/fn-templates

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? μ˜€ν”ˆν•œ 지 μ–Όλ§ˆ λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν•  수 μžˆλŠ” 일이 μžˆμŠ΅λ‹ˆκΉŒ?

@Akryum μ§€λ‚œ 2μ›” ν‹°μ € μ΄ν›„λ‘œ 물에

이것이 μ„±κ°€μ‹  일이라면 μ£„μ†‘ν•©λ‹ˆλ‹€. μ–΄λ–»κ²Œ ν•˜λ©΄ 이런 일이 μΌμ–΄λ‚˜κ²Œ ν•  수 μžˆλŠ”μ§€ μ•Œκ³  μ‹ΆμŠ΅λ‹ˆλ‹€. :)

@scottbedard μ œκ°€ μž‘μ—…ν•˜κ³  μžˆμ—ˆλŠ”λ° λͺ‡ 가지 μˆ¨κ²¨μ§„ λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λŸ¬ν•œ κΈ°λŠ₯은 μ‚¬μš©ν•  수 μ—†λŠ” κΈ°λŠ₯으둜 λ¬Έμ„œν™”λ  수 μžˆμŠ΅λ‹ˆλ‹€. μž‘μ—…μ€ κ½€ 였래 전에 μ™„λ£Œλ˜μ—ˆμœΌλ©° λΆˆν–‰ν•˜κ²Œλ„ λ Œλ”λ§ μ‹œμŠ€ν…œμ˜ ν˜„μž¬ μƒνƒœμ— λ§€ν•‘λ˜μ§€ μ•ŠμœΌλ―€λ‘œ μž‘μ—…μ„ μ™„λ£Œν•΄μ•Ό ν•©λ‹ˆλ‹€.

@vuejs/collaborators 이 κΈ°λŠ₯에 λŒ€ν•΄ μ „λ°˜μ μœΌλ‘œ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹­λ‹ˆκΉŒ? 개발 λ…Έλ ₯κ³Ό 코어에 λŒ€ν•œ μΆ”κ°€ λΉ„μš©μ΄ 이 κΈ°λŠ₯을 μ‚¬μš©ν•  κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆκΉŒ?

μ»΄ν¬λ„ŒνŠΈλ₯Ό μž‘μ„±ν•˜λŠ” κΈ°λ³Έ 방법은 ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•˜λŠ” 것이기 λ•Œλ¬Έμ— κΈ°λŠ₯이 있으면 쒋은 것 κ°™μ•„μš”. 그리고 (ν…œν”Œλ¦Ώ μ»΄νŒŒμΌλŸ¬μ—μ„œ μ‚¬μš©λ˜λŠ”) ꡬ성 μš”μ†Œμ—μ„œ λͺ¨λ“  λ Œλ”λ§ κΈ°λŠ₯을 λΆ„λ¦¬ν•˜λŠ” IMHOλŠ” ν›Œλ₯­ν•  κ²ƒμž…λ‹ˆλ‹€.

λ¬Έμ œλŠ” ν…œν”Œλ¦Ώμ„ κΈ°λŠ₯적으둜 μ‚¬μš©ν•˜λŠ” λ²”μœ„κ°€ JSX/Render κΈ°λŠ₯을 μ‚¬μš©ν•˜λŠ” 것보닀 훨씬 더 μ œν•œμ μ΄λΌλŠ” κ²ƒμž…λ‹ˆλ‹€. NS

κΈ°λŠ₯적 μ»΄ν¬λ„ŒνŠΈλ₯Ό κ΅¬μΆ•ν•˜λŠ” μ‹œμ μ—μ„œ μ œμ•½ 쑰건과 λ””μžμΈ νŒ¨ν„΄μ΄ ν…œν”Œλ¦Ώ λͺ¨λΈμ— λ§žμ§€ μ•ŠλŠ”λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 이 κΈ°λŠ₯은 μ•½κ°„μ˜ μΆ”κ°€ λŸ°νƒ€μž„μ΄ ν•„μš”ν•©λ‹ˆλ‹€(https://github.com/vuejs/vue/commit/f63203310f01e9f0813e0316c308f9f21d0ee717#diff-4d479bb000ed54582de8e4cd8158ef64와 λ™μΌν•œ μ„±λŠ₯을 가짐).

이 κΈ°λŠ₯을 ν™œμ„±ν™”ν•˜λ©΄ 더 λ‚˜μ€ μ„±λŠ₯을 κ°€μ •ν•˜μ§€λ§Œ 순수 λ Œλ” κΈ°λŠ₯에 λΉ„ν•΄ μ΄λŠ” 사싀이 μ•„λ‹™λ‹ˆλ‹€. ν˜„μž¬ 이 κΈ°λŠ₯에 λŒ€ν•œ 제 μž…μž₯은 ν…œν”Œλ¦Ώμ΄ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ„λ‘ κΆŒν•œμ„ λΆ€μ—¬ν•  뿐 μ§„μ •ν•œ 보상은 μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ˜ν•œ κΈ°λŠ₯적 ꡬ성 μš”μ†Œμ— λŒ€ν•œ λ²”μœ„ μŠ€νƒ€μΌ 지원이 있으면 μ’‹κ² μ§€λ§Œ 관련이 없을 수 μžˆμŠ΅λ‹ˆλ‹€.

그것은 관련이 μ—†μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것이 νš¨κ³Όκ°€ μžˆλ‹€κ³  λ―ΏμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 전에 그것에 λŒ€ν•΄ μž‘μ—…ν–ˆμŠ΅λ‹ˆλ‹€. νšŒκ·€κ°€ μ—†λ‹€λ©΄?

Vue의 κΈ°λŠ₯적 ꡬ성 μš”μ†ŒλŠ” React에 λΉ„ν•΄ μ•½κ°„ μΆ”ν•©λ‹ˆλ‹€. template jsx 보닀 훨씬 덜 κΈ°λŠ₯μ μž…λ‹ˆλ‹€. μ•„λ§ˆλ„ λ‹€μŒκ³Ό 같이 λ³€ν™˜ 처리λ₯Ό μœ„ν•΄ vue-loader λ₯Ό 빌릴 수 μžˆμŠ΅λ‹ˆλ‹€.

<script functional>
const DumbCmp = props => (
  <Button>{props.label}</Button>
);

export default DumbCmp;
</script>

μ‹€μ œλ‘œ, 일뢀 μ‚¬λžŒλ“€μ€ λͺ‡ 달 전에이 serval을 μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. https://github.com/nickmessing/babel-plugin-jsx-vue-functional

이것이 μš°λ¦¬κ°€ κΈ°λ‹€λ¦¬λ˜ κ²ƒμž…λ‹ˆκΉŒ? https://github.com/vuejs/vue/commit/ea0d227d2ddfa5fc5e1112acf9cd485b4eae62cb

예, Vue 2.5 + vue-loader 13.3은 ν…œν”Œλ¦Ώ 컴파일, λ²”μœ„κ°€ μ§€μ •λœ CSS 및 κΈ°λŠ₯ ꡬ성 μš”μ†Œμ— λŒ€ν•œ ν•« λ¦¬λ‘œλ“œλ₯Ό μ μ ˆν•˜κ²Œ μ§€μ›ν•©λ‹ˆλ‹€. :)

κΈ°λŠ₯적 ꡬ성 μš”μ†Œμ—μ„œ $emit이 κ°€λŠ₯ν•©λ‹ˆκΉŒ?

λ‚΄κ°€ 틀리지 μ•ŠλŠ” ν•œ, 짧은 λŒ€λ‹΅μ€ μ•„λ‹ˆμ˜€μž…λ‹ˆλ‹€. κΈ°λŠ₯ ꡬ성 μš”μ†ŒλŠ” μΈμŠ€ν„΄μŠ€κ°€ μ•„λ‹ˆλ―€λ‘œ λ©”μ„œλ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

일뢀 해컀λ₯Ό 톡해 μ‹€μ œλ‘œ λ°©μΆœν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ Œλ” fn이 μˆ˜μ‹ ν•˜λŠ” μ»¨ν…μŠ€νŠΈ κ°μ²΄μ—λŠ” 항상 vue μΈμŠ€ν„΄μŠ€μ—¬μ•Ό ν•˜λŠ” parent κ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. context.parent.$emit() λ˜λŠ” context.parent.$root.$emit() λ₯Ό μ„ νƒν•˜μ—¬ 보닀 κΈ€λ‘œλ²Œν•œ μ ‘κ·Ό 방식을 μ·¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ³΄μ‹œλ‹€μ‹œν”Ό 이것은 κΈ°λŠ₯ ꡬ성 μš”μ†Œμ—μ„œ λ°œμƒν•˜λŠ” μ΄λ²€νŠΈκ°€ μ•„λ‹ˆλ―€λ‘œ μ‚¬μš© 사둀에 따라 μ΅œμƒμ˜ μ†”λ£¨μ…˜μ΄ 아닐 수 μžˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”, μ €λŠ” λŒ€μ‹œλ³΄λ“œ μš”μ†Œ 쀑 일뢀λ₯Ό μ΅œμ ν™”ν•˜κ³  SFC ꡬ성 μš”μ†Œκ°€ κΈ°λŠ₯적으둜 λ©‹μ§€κ²Œ 듀리도둝 ν•˜λŠ” 방법을 μ—°κ΅¬ν•˜κ³  μžˆμ—ˆμ§€λ§Œ κ±°κΈ°μ—λŠ” λ©”μ„œλ“œλ‚˜ κ³„μ‚°λœ μ†Œν’ˆμ΄ 없을 κ²ƒμž…λ‹ˆλ‹€. κ·Έλ ‡μ£ ?
λ Œλ” κΈ°λŠ₯μ΄λ‚˜ JSXλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μ΅œμ†Œν•œ λ Œλ” κΈ°λŠ₯ λ‚΄λΆ€μ—μ„œ 자체적으둜 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ§žμŠ΅λ‹ˆκΉŒ?

κΈ°λŠ₯적 ꡬ성 μš”μ†Œμ—μ„œ $emit이 κ°€λŠ₯ν•©λ‹ˆκΉŒ?

κΈ°λŠ₯ μ»¨ν…μŠ€νŠΈ μ—μ„œ listeners κ°œμ²΄μ— μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

<my-functional-component @request-something="onRequestSomething" />

my-functional-component λ‚΄λΆ€μ˜ λ©”μ„œλ“œμ²˜λŸΌ λ¦¬μŠ€λ„ˆλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

listeners['request-something'](42)

λ Œλ” κΈ°λŠ₯μ΄λ‚˜ JSXλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μ΅œμ†Œν•œ λ Œλ” κΈ°λŠ₯ λ‚΄λΆ€μ—μ„œ 자체적으둜 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ§žμŠ΅λ‹ˆκΉŒ?

예.

@Akryum κ°μ‚¬ν•©λ‹ˆλ‹€. ν‘œμ€€ λ Œλ” κΈ°λŠ₯이 λ‚΄μš©μ„ 읽기 μ–΄λ ΅κ²Œ λ§Œλ“€κΈ° λ•Œλ¬Έμ— 더 크고 ν…œν”Œλ¦Ώμ΄ λ§Žμ€ κΈ°λŠ₯ ꡬ성 μš”μ†Œκ°€ JSXλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 λ‚˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이것에 λŒ€ν•œ κ³ κΈ‰ νŠœν† λ¦¬μ–Όμ€ 정말 달콀할 κ²ƒμž…λ‹ˆλ‹€. :)

더 이상 κΈ°λŠ₯ ꡬ성 μš”μ†Œμ™€ ν•¨κ»˜ λ Œλ”λ§ κΈ°λŠ₯을 μ‚¬μš©ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€

2018λ…„ 1μ›” 5일 κΈˆμš”μΌ μ˜€μ „ 4μ‹œ 53λΆ„, Dobromir Hristov [email protected]
썼닀:

@Akryum https://github.com/akryum κ°μ‚¬ν•©λ‹ˆλ‹€. 더 크고 더 무거운 ν…œν”Œλ¦Ώ
func ꡬ성 μš”μ†ŒλŠ” ν‘œμ€€ λ Œλ”λ§ λ•Œλ¬Έμ— JSXλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 λ‚˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 읽기가 쑰금 더 μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€. κ³ κΈ‰ νŠœν† λ¦¬μ–Ό
이것듀은 정말 달콀할 κ²ƒμž…λ‹ˆλ‹€ :)

β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ 확인
https://github.com/vuejs/vue/issues/3977#issuecomment-355514921 λ˜λŠ” μŒμ†Œκ±°
μŠ€λ ˆλ“œ
https://github.com/notifications/unsubscribe-auth/AACouk0kTLUHRjQDnXj2vn2v4Rq7maXOks5tHfExgaJpZM4KaIfu
.

@blocka ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? 예λ₯Ό λ“€μ–΄ 차트λ₯Ό μΈμŠ€ν„΄μŠ€ν™”ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

vnode둜 차트λ₯Ό μ™„μ „νžˆ λ Œλ”λ§ν•˜μ§€ μ•ŠλŠ” ν•œ
이λ₯Ό μˆ˜ν–‰ν•˜λŠ” 수λͺ… μ£ΌκΈ° λ©”μ„œλ“œκ°€ μžˆλŠ” 일반 ꡬ성 μš”μ†Œ

2018λ…„ 1μ›” 5일 κΈˆμš”μΌ μ˜€μ „ 5:41 Dobromir Hristov μ•Œλ¦Ό @github.com
썼닀:

@blocka https://github.com/blocka ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰ν•˜λŠ” 방법
무엇? 예λ₯Ό λ“€μ–΄ 차트λ₯Ό μΈμŠ€ν„΄μŠ€ν™”ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ 확인
https://github.com/vuejs/vue/issues/3977#issuecomment-355524605 λ˜λŠ” μŒμ†Œκ±°
μŠ€λ ˆλ“œ
https://github.com/notifications/unsubscribe-auth/AACouvWQNer0XUjuzBDHgePpZQ-D2DAWks5tHfx2gaJpZM4KaIfu
.

@Akryum κ·€ν•˜μ˜ μ†”λ£¨μ…˜μ€ νš¨κ³Όκ°€ μžˆμ§€λ§Œ κΈ°λŠ₯적인 sfc ν…œν”Œλ¦Ώμ΄ 쑰금 더 λ§Žμ€ μ‚¬λž‘μ„ μ‚¬μš©ν•  수 μžˆλ‹€λŠ” λŠλ‚Œμ„ μ€λ‹ˆλ‹€. μ €λŠ” μ²˜μŒλΆ€ν„° μž‘λ™ν•  수 μžˆμ—ˆλ˜ μ—¬λŸ¬ ꡬ성 μš”μ†Œλ₯Ό λ‹€μ‹œ μž‘μ„±ν•˜λŠ” 과정에 있으며 κ²½ν—˜μ— μ•½κ°„ μ‹€λ§ν–ˆμŠ΅λ‹ˆλ‹€. sfcμ—λŠ” props 및 listeners ν…œν”Œλ¦Ώμ—μ„œ μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ” μ»¨ν…μŠ€νŠΈκ°€ 이미 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 속성을 props의 경우 'root'에 λ§€ν•‘ν•˜κ³  λ¦¬μŠ€λ„ˆμ˜ 경우 '$emit'에 λ§€ν•‘ν•˜μ—¬ 각 μœ ν˜•μ˜ sfcκ°€ λ™μΌν•œ API둜 μž‘λ™ν•˜λ„λ‘ ν•  수 μ—†μ—ˆμŠ΅λ‹ˆκΉŒ?

<template functional>
    <div @click="listeners['request-something'](42)">
        {{props.hello}}
        {{props.world}}
    </div>
</template>

<script>
export default {
    props: ["hello", "world"]
}
</script>

될 수 μžˆμ—ˆλ‹€

<template functional>
    <div @click="$emit('request-something', 42)">
        {{hello}}
        {{world}}
    </div>
</template>

<script>
export default {
    props: ["hello", "world"]
}
</script>
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰