2.5.2
https://codesandbox.io/s/mzvkppmvo8
μ€λ₯μμ΄ μλν΄μΌν©λλ€.
AppSwitcher.vueμ λ³κ²½μΌλ‘ μΈν΄ "λμΌν λ λ νΈλ¦¬μμ λ°κ²¬ λ μ¬λ‘―"μλΈ ν μ€νΈ "μ μ€λ³΅ μ‘΄μ¬"μ€λ₯κ° λ°μνμ§λ§ μ€λ³΅μ΄ μμ΅λλ€.
λν App.vueμ divμ slot-scope
μ μΆκ°νλ©΄ λ¬Έμ κ° ν΄κ²°λκ³ μ€λ₯κ° μμ§λ§ slot-scope
μμ΄ λ°μνλ μ΄μ λ 무μμ
λκΉ?
μλ νμΈμ @ Kelin2025
V2.5μμμ μ½κ°μ λ³νκ° μμλ€ scoped-slot
-, λΉμ μ μ¬κΈ°λ₯Ό ν΅ν΄ κ° μ https://gist.github.com/yyx990803/9bdff05e5468a60ced06c29c39114c6b#simplified -scoped μ¬λ‘―-μ¬μ©
μ΄κ²μ λΉμ μ νΌλμ ν΄κ²°ν μ μμ΅λλ€
μ, μκ³ μμ§λ§ μμ΄ μ€λ₯κ° λ°μνλμ§ μ΄ν΄νμ§ λͺ»ν©λλ€. μ¬λ‘―μ __duplicates__κ°μκ³ rerender λ§ μμ΅λλ€.
λ²μκ° μ§μ λ μ¬λ‘― λ΄λΆμ μ¬λ‘―μ΄ λ λ² μ΄μ λ λλ§ λ κ² κ°μ΅λλ€.
@Justineo λ³κ²½ μ¬νμ λν΄ λ€μ λ λλ§λκ³ μμ§λ§ λ¬Έμ λ₯Ό μΌμΌν€μ§ μμμΌν©λλ€.
λ΄ 2 μΌνΈ.
λ€μμμ΄ λ¬Έμ μ λ λ€λ₯Έ μ¬νμ λλ€ (https://codesandbox.io/s/m5kl6p97qx). λͺ¨λ¬μ΄ λ λ² μ΄μ νμλ κ²½μ°μλ§ κ²½κ³ κ° λ°μν©λλ€.
λ°λ©΄, λμΌν κ΅¬μ± μμμ JSX λ²μ μ κ²½κ³ λ₯Ό λ°μμν€μ§ μμ΅λλ€ (https://codesandbox.io/s/k0wpj60z5r).
μ λ κ°μ μΌμ κ²ͺκ³ μμ΅λλ€. μ¬λ‘― λ²μ λ΄μμ λ€μ λ λλ§μ νΈλ¦¬κ±°νλ λͺ¨λ νλͺ©μ μ€λ³΅ μ¬λ‘― μ‘΄μ¬μ λν κ²½κ³ λ₯Ό λ°μμν΅λλ€.
λ¬Έμ λ μ¬κΈ°μ΄ μ€μμλ κ² κ°μ΅λλ€ . μ¬λ‘―μ΄ ν λ² λ λλ§λλ©΄ ν΄λΉ λΈλ‘μ νμ μ€νμ μλ§λ 첫 λ²μ§Έ λ λλ§μμ slotNodes._rendered
μ°ΈμΌλ‘λ©λλ€.
λ€μ λ λλ§μ΄ νΈλ¦¬κ±° λ λ 무μΈκ°κ° λ€μ κ±°μ§μΌλ‘ μ€μ λμ΄μΌνλ€κ³ μκ°νμ§λ§, Vueκ° λ΄λΆμμ μ΄λ»κ² μλνλμ§μ λν΄μλ κ±°μ μμ§ λͺ»νκΈ° λλ¬Έμ μΆμΈ‘ μΌλΏμ λλ€.
μ΄ λ²κ·Έλ κ°λ₯μ±μ΄ ν¬λ°ν μΌμ΄μ€μ²λΌ 보μ΄μ§λ§ μ΅κ·Όμ λͺ λ² λμκ² λ°μνμ΅λλ€. μ λ ꡬ체μ μΈ κ΅¬νκ³Ό μ§μ μ΄λ£° μμλ λ λλ¦¬μ€ κ΅¬μ± μμλ₯Ό μμ±νλ ν¨ν΄μ μ΄λ ¬ν ν¬μ΄λ©°,μ΄ λ¬Έμ κ° λ°μν λ μλΉμμ μ½ν μΈ λ₯Ό ꡬ체μ μΈ κ΅¬νμΌλ‘ μ λ¬νλ €κ³ ν©λλ€.
μ΄ μλ:
λ΄ κ΅¬μ± μμ :
<template>
<slot :someprop="value"></slot>
</template>
μ±:
<my-component>
<template slot-scop="someprop">{{ prop }} ... and do something else</template>
</my-component>
νΉν "v-for"μ "slot"μ΄
Vue.js β€v2.4.xλ₯Ό μ¬μ©νλ κ²½μ° slot-scope
λ₯Ό μ¬μ©νλ €κ³ νλ©΄μ΄ μ€λ₯κ° νμ λ μ μμ΅λλ€ (κ·Έκ² μ μκ² μΌμ΄λ μΌμ
λλ€).
ν΄κ²°μ± μ Vue.jsλ₯Ό β₯2.5λ‘ μ λ°μ΄νΈνκ±°λ "μ¬λ‘― λ²μ"λμ "λ²μ"λ₯Ό μ¬μ©νλ κ²μ λλ€.
_ https://vuejs.org/v2/api/#scope -replaced_
λ΄κ° ν κ²μ²λΌ λ€λ₯Έ μ¬λμ΄ Googleμμ μ΄κ²μ μ°Ύλ λ° λμμ΄λκΈ°λ₯Ό λ°λλλ€.
μΆμ . Vue.js β€v2.4.xλ₯Ό μ¬μ©νλ κ²½μ° <template>
μμλ₯Ό μ¬μ©ν΄μΌν©λλ€. β₯2.5κ° λ λκΉμ§ κΈ°ν μμμ μ¬λ‘― λ²μ κ²½κ³λ₯Ό μ§μ ν μ μμ΅λλ€. .μμ€. μ€μ μ¬λ‘ :
<div class="form-group col-md">
<label>Autocomplete field 4 (w/ custom search results):</label>
<autocomplete v-model="autocompleteExampleValue4" action="listGlobalSearchResults" :handle-formatting-response-data="handleFormattingDummySearchResults" placeholder="This one has a custom placeholder too">
<template slot="search-result-item" scope="slotData"><!-- Note that you can use destructuring here, but it only works in modern browsers -- otherwise you have to define a separate variable -- like scope="slotData" and then use {{slotData.id}}... (see https://vuejs.org/v2/guide/components-slots.html#Destructuring-slot-scope) -->
<!-- TODO: update to vue β₯ 2.5.0 to allow this slotData thing to be attached w/o using a template element. Also when we do that, "scope" will become "slot-scope". See https://vuejs.org/v2/guide/components-slots.html#Scoped-Slots for more info -->
<span>{{slotData.searchResult.label}}</span>
</template>
</autocomplete>
</div>
ν΄κ²°μ± μ Vue.jsλ₯Ό β₯2.5λ‘ μ λ°μ΄νΈνκ±°λ "μ¬λ‘― λ²μ"λμ "λ²μ"λ₯Ό μ¬μ©νλ κ²μ λλ€.
2.5.17
μμ μ¬μ νμ΄ λ¬Έμ κ° λ°μν©λλ€.
λ λλ¦¬μ€ μ»΄ν¬λνΈ μΆμνλ₯Ό λ§λ€λ €κ³ ν λ μ λ§ μ§μ¦μ΄λ©λλ€.
κ°μ₯ μ μ©ν λκΈ
μ λ κ°μ μΌμ κ²ͺκ³ μμ΅λλ€. μ¬λ‘― λ²μ λ΄μμ λ€μ λ λλ§μ νΈλ¦¬κ±°νλ λͺ¨λ νλͺ©μ μ€λ³΅ μ¬λ‘― μ‘΄μ¬μ λν κ²½κ³ λ₯Ό λ°μμν΅λλ€.
λ¬Έμ λ μ¬κΈ°μ΄ μ€μμλ κ² κ°μ΅λλ€ . μ¬λ‘―μ΄ ν λ² λ λλ§λλ©΄ ν΄λΉ λΈλ‘μ νμ μ€νμ μλ§λ 첫 λ²μ§Έ λ λλ§μμ
slotNodes._rendered
μ°ΈμΌλ‘λ©λλ€.λ€μ λ λλ§μ΄ νΈλ¦¬κ±° λ λ 무μΈκ°κ° λ€μ κ±°μ§μΌλ‘ μ€μ λμ΄μΌνλ€κ³ μκ°νμ§λ§, Vueκ° λ΄λΆμμ μ΄λ»κ² μλνλμ§μ λν΄μλ κ±°μ μμ§ λͺ»νκΈ° λλ¬Έμ μΆμΈ‘ μΌλΏμ λλ€.
μ΄ λ²κ·Έλ κ°λ₯μ±μ΄ ν¬λ°ν μΌμ΄μ€μ²λΌ 보μ΄μ§λ§ μ΅κ·Όμ λͺ λ² λμκ² λ°μνμ΅λλ€. μ λ ꡬ체μ μΈ κ΅¬νκ³Ό μ§μ μ΄λ£° μμλ λ λλ¦¬μ€ κ΅¬μ± μμλ₯Ό μμ±νλ ν¨ν΄μ μ΄λ ¬ν ν¬μ΄λ©°,μ΄ λ¬Έμ κ° λ°μν λ μλΉμμ μ½ν μΈ λ₯Ό ꡬ체μ μΈ κ΅¬νμΌλ‘ μ λ¬νλ €κ³ ν©λλ€.