Vue: [рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛] RFC: рджрд╛рдпрд░реЗ рд╡рд╛рд▓реЗ рд╕реНрд▓реЙрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рджрд┐рд╕ре░ 2018  ┬╖  36рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vuejs/vue

рдпрд╣ https://github.com/vuejs/vue/issues/7740#issuecomment -371309357 рдХрд╛ рдЕрдиреБрд╡рд░реНрддреА рд╣реИ

рддрд░реНрдХрд╕рдВрдЧрдд

рд╡рд░реНрддрдорд╛рди рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ:

  • рд╡рд░реНрдмреЛрдЬрд╝ рдпрджрд┐ <template slot-scope> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
  • рдПрдХ рддрддреНрд╡/рдШрдЯрдХ рддрдХ рд╕реАрдорд┐рдд slot-scope рд╕реАрдзреЗ рд╕реНрд▓реЙрдЯ рддрддреНрд╡ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡

рдПрдХ рдирдпрд╛ v-scope рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдШрдЯрдХреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

<comp v-scope="scope">
  {{ scope.msg }}
</comp>

рдпрд╣ slot-scope рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХреЗ рд▓рд┐рдП <comp> рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдХрд░реЗрдЧрд╛ ( <comp> рд╕реНрдХреЛрдк рд╡реИрд▓реНрдпреВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде)ред рддреЛ рдпрд╣ deconstructing рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

<comp v-scope="{ msg }">
  {{ msg }}
</comp>

рдХреНрдпреЛрдВ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрджреЗрд╢

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЯреАрдо рдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╕реНрд▓реИрдХ рдкрд░ https://github.com/vuejs/vue/issues/7740#issuecomment -371309357 рдореЗрдВ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдЙрд╕ рдкрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдм рдЪреИрдЯ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрд╣рд╛рдБ рдПрдХ рдирдП рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдкреАрдЫреЗ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  • slot-scope рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛ v- рдЙрдкрд╕рд░реНрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ) рдХреНрдпреЛрдВрдХрд┐ slot рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рд╕реНрд▓реЙрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реБрд╕рдВрдЧрдд рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ . slot рдмрджрд▓реЗ рдореЗрдВ рдПрдХ рдЧреИрд░-рдирд┐рд░реНрджреЗрд╢рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧ рдЫрд╛рдпрд╛ рдбреЛрдо рдорд╛рдирдХ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрд▓реЙрдЯ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░реЗред рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЬрдм рдорд╛рдирдХ рдореЗрдВ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдХреБрдЫ рд╣реИ рддреЛ рдЕрдкрдиреЗ рд╕рдорд╛рдирд╛рдВрддрд░ v-slot рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

  • рдореВрд▓ рд░реВрдк рд╕реЗ, slot-scope рдХреЛ рдХреЗрд╡рд▓ <template> рддрддреНрд╡реЛрдВ рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдЕрдореВрд░реНрдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╣ рд╡рд░реНрдмреЛрдЬрд╝ рдерд╛ - рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ <template> рдХреЛ рд▓рдкреЗрдЯреЗ рдмрд┐рдирд╛ рд╕реАрдзреЗ рд╕реНрд▓реЙрдЯ рддрддреНрд╡ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреЗрд╢ рдХреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рд╕реЗ рдШрдЯрдХ рдкрд░ рд╕реАрдзреЗ slot-scope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛

  • рдореИрдВрдиреЗ slot-scope рд╕рдВрд╢реЛрдзрдХ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕реАрдзреЗ рдПрдХ рдШрдЯрдХ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдЗрд╕рдХреА рд╕реНрд▓реЙрдЯ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рди рддреЛ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдпрд╛ рдЙрдкрд╕рд░реНрдЧ рдЬреИрд╕реЗ $ рд╕рд╣реА рдлрд┐рдЯ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдХреЗрд╡рд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдПрдХрд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдВрдкреВрд░реНрдг рд╕рд┐рдВрдЯреИрдХреНрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИред

  • рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣рдо рдЕрдзрд┐рдХ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХрддрд░рд╛рддреЗ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрдерд┐рд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдореВрд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдиреНрдпреВрдирддрдо рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЪреАрдЬреЗрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпреВрдЬрд░рд▓реИрдВрдб рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрд╛рдлреА рдХрдо рд╢реЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЪрд┐рдВрддрд╛рдУрдВ

  • v-scope рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИ: рдпрд╣ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдирд╛рдо (рдЬреЛ рдПрдХ рдбрд┐рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреВрд░реНрд╡рддрд╛ рдХреЗ рдирд╣реАрдВ: рдпрд╣ v-for рдХреЗ рдЙрдкрдирд╛рдо рднрд╛рдЧ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ v-scope рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ v-for рд╕рд╛рде рдПрдХ рд╣реА рд╢рд┐рд╡рд┐рд░ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рджрд╛рдпрд░реЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдмрдирд╛рддрд╛ рд╣реИред

  • рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ v-scope рдирд╛рдордХ рдПрдХ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдФрд░ рдПрдХ рдШрдЯрдХ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    • рдЪреВрдВрдХрд┐ v2 рдореЗрдВ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпрдХреНрд╖ DOM рдЬреЛрдбрд╝рддреЛрдбрд╝ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджреБрд░реНрд▓рдн рд╣реИ, рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ v-scope рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рднрд╛рд╡ рдиреНрдпреВрдирддрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

    • рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред

discussion intend to implement

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕рдорд╕реНрдпрд╛ рдХреЛ рддреЛрдбрд╝рдирд╛

рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ:

  • рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░реЗрдВ
  • рдпрд╣ рдХрд╣рдиреЗ рд╕реЗ рдмрдЪреЗрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд▓реЙрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ
  • рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирдП рдПрдкреАрдЖрдИ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░реЗрдВ
  • рдПрдкреАрдЖрдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рди рд▓рдЧрд╛рдПрдВ рдЬрд╣рд╛рдВ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ
  • рдбреЗрдЯрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░рд╣реЗрдВ

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрди рд╕рднреА рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ! ЁЯдЮ $event рд▓рд┐рдП v-on , рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд╛рдорд┐рдд рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдПрдХ рдорд┐рд╕рд╛рд▓ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреНрд░рдо рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рд╣рдореЗрдВ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди

v-scope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╕реНрд▓реЙрдЯ рд╕реНрдХреЛрдк рдХреЛ $slot рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<TodoList :todos="todos">
  {{ $slot.todo.text }}

  <template slot="metaBar">
    You have {{ $slot.totals.incomplete }} todos left.
  </template>
</TodoList>

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдЪрд╛рдЗрд▓реНрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

<ul>
  <li v-for="todo in todos">
    <slot :todo="todo" />
  </li>
</ul>

<div>
  <slot name="metaBar" v-bind="itemsStats" />
</div>

рдЬрдм рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ $slot рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд▓реЙрдЯ рдбреЗрдЯрд╛ рдХреЛ рдорд░реНрдЬ рдХрд░ рджреЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рдмрд╕реЗ рднреАрддрд░реА рд╕реНрд▓реЙрдЯреНрд╕ рдУрд╡рд░рд░рд╛рдЗрдб рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд▓реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдВ:

<Outer>
  <Middle>
    <Inner>
      {{ $slot }}
    </Inner>
  </Middle>
</Outer>

рд╡рд┐рд▓рдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

$slot = {
  ...outerSlotData,
  ...middleSlotData,
  ...innerSlotData
}

рдЖрдк рдирд╛рдорд╕реНрдерд╛рди рдУрд╡рд░рд▓реИрдк рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд/рдЖрд╢реНрдЪрд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ 99.9% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдИ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<UserData id="chrisvfritz">
  My email is {{ $slot.user.email }}, but you can reach Sarah at
  <UserData id="sdras">
    {{ $slot.user.email }}
  </UserData>.
</UserData>

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реНрдХреЛрдк рдХреЗ рдмрд╛рд╡рдЬреВрдж, $slot.user рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдорд╛рди рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреИрд╕реЗ рдХрд┐:

<UserData id="chrisvfritz">
  <template slot-scope="me">
    <UserData id="sdras">
      <template slot-scope="sarah">
        <CollaborationPageLink :user-ids="[me.user.id, sarah.user.id]">
          View your collaboration history
        </CollaborationPageLink>
      </template>
    </UserData>
  </template>
</UserData>

рдЗрди рджреБрд░реНрд▓рдн рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА slot-scope рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рд▓реЗрдХрд┐рди v-scope рдЕрднреА рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ $slot рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдкреВрд░рд╛ рдХрд░ рдЪреБрдХрд╛ рд╣реЛрдЧрд╛ред

рд▓рд╛рдн

  • рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд▓реЙрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдПрдХрдорд╛рддреНрд░ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ $slot , рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░рд╣рддреЗ рд╣реБрдП

  • рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕ рд╕реНрд▓реЙрдЯ (рдЦрд╛рддреЛрдВ) рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдПрдЧреА ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ v-scope , рдпрд╣ рдорд╛рдирдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рднреНрд░рдо рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ v-for рдЬреИрд╕рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬреЛ рд╕реНрдХреЛрдкреНрдб рд╕рдВрджрд░реНрдн рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдФрд░ рд╕рд╣рдЬ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ , рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред

  • рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде рдЬреЛ рд╕рднреА рд░рд╛рдЬреНрдп рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдШрдЯрдХ рдХреБрдЫ рд░рд╛рдЬреНрдп рд╕реЗ рдЖрдпрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ slot-scope рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдиреБрдХрд╕рд╛рди рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЙрдкреНрдб рд╕реНрд▓реЙрдЯ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд░рд╛рдЬреНрдп рдкреНрд░рджрд╛рддрд╛ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рддрд░реНрдХ рд╣реИ ред рддреЛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЙрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рдЕрдзрд┐рдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред

  • рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ Vue рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдХреЗрд╡рд▓ $slot рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд╕реНрддреБ рд╣реИред

  • рдПрдХ $ -prefixed рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд╡реЗрдм рдШрдЯрдХ рд╕реНрд▓реЙрдЯ API рдкрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ $slot рдПрдХ Vue рдЪреАрдЬрд╝ рд╣реИред

  • рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЕрдХреНрд╕рд░ рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рдирд╛ <slot v-bind="user" /> , рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╡рд░реНрдг рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ slot-scope="user" рдХреЗ рдмрдЬрд╛рдп slot-scope="{ user } ред рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрднрд╡ рд╣реБрдЖ рд╣реИред рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдШрдЯрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ _рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдлрд┐рд░ рдЙрдирдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ: рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ рдпрд╛ рдЗрд╕ рдирдИ рд╕рдВрдкрддреНрддрд┐ рдХреЛ user рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдмрд╛рдзреНрдп рдХрд░реЗрдВ, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХрдо рд╕рдВрдмрдВрдз рд╣реЛред рди рддреЛ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, $slot рдШрдЯрдХреЛрдВ рдХреЛ рдХрдо рднрд╡рд┐рд╖реНрдп-рд╕рдмреВрдд рдмрдирд╛рдиреЗ рдХреЗ рдкреНрд░рд▓реЛрднрди рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ , рдХреНрдпреЛрдВрдХрд┐ рдЬрдмрдХрд┐ $slot рдЕрднреА рднреА $slot.user рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ $slot рд░реВрдк рдореЗрдВ рдЕрд▓рд┐рдпрд╛рд╕ рдХрд░рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддреЗ рд╣реИрдВ

рдиреБрдХрд╕рд╛рди

  • рдХреБрдЫ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЙрдкреНрдб рд╕реНрд▓реЙрдЯ рдореЗрдВ, рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд┐рд╕ рдШрдЯрдХ рд╕реЗ рдЖрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА slot-scope рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХрддрдо рдЦреЛрдЬрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд╛рдЬреНрдп рдкреНрд░рджрд╛рддрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЧреЛрд▓реА рдорд╛рд░ рд░рд╣рд╛ рд╣реИ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╕рднреА 36 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдПрдХ рд╕реНрд▓реЙрдЯ рдирд╛рдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╣реА рдШрдЯрдХ рдкрд░ рдХрдИ рдирд┐рд░реНрджреЗрд╢реЛрдВ v рджрд╛рдпрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдШрдЯрдХ рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЬреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрд╛ рдпрджрд┐ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ

рдУрд╡рд░рд░рд▓, рдпрд╣ рд░реЗрдВрдбрд░рд▓реЗрд╕ рдШрдЯрдХреЛрдВ рдХреЗ рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ

рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ v-scope рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп:

<foo>
  <template slot-scope="{ item }">{{ item.id }}</template>
</foo>

рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

<foo v-scope="{ item }">{{ item.id }}</foo>

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рдХрдо рд╢реЛрд░ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдорд╛рдорд▓рд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдУрд╡рд░рдХрд┐рд▓ (рдЬреЛ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ v-for рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдШрдЯрдХреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреАрдЪреЗ <slot> рддрд░реНрдХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред рдПрдХ рдФрд░ рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ v-scope рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдХреЗрд╡рд▓ рджреЛ рдШрдЯрдирд╛рдПрдВ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдмрдЯреНрд░реА (https://github.com/vuejs/vue/issues/5269) рдХреЗ рдбреЗрдЯрд╛ рджрд╛рдпрд░реЗ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реА рд╣реИрдВред #issuecomment-288912328, https://github.com/vuejs/vue/issues/6913), рдЬреИрд╕реЗ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ with рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗрдВ рдпрд╣ рдкрд╕рдВрдж рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢реНрди рд╢реЗрд╖ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯреНрд╕ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдХреЛ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ <template> рдкрд░ рднреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

<comp v-scope="scope">
  {{ scope.msg }} <!-- default slot, inheriting from the scope from above -->
  <template slot="someName" v-scope="otherScope">
    <p>{{ otherScope }}</p>
    <div> whatever</div>
  </template>
</comp>

рд╣рдо рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ sot-scope рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ Vue 3 рдореЗрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ v-scope

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ ( v-scope рдирд┐рд░реНрджреЗрд╢ рдФрд░ slot-scope ) рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд┐рдбреЗрдиреЛрдЯ: рдЕрдм, рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рд▓реЛрдЧреЛрдВ рдХреЛ рддрддреНрд╡реЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рдЖрднрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░
рдирд┐рд░реНрджреЗрд╢, рдХрд┐ рд╡реЗ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдореЗрдВ otherScope рдФрд░ scope рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдирд╛рдо рдХреЗ рд▓рд┐рдП @LinusBorg , рдПрдХ рддрд░реНрдХ v-scope:slotName ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдШрдЯрдХреЛрдВ рдкрд░ рдЗрд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ @Justineo рдиреЗ рдЬреЛ рдХрд╣рд╛ рд╣реИ рдЙрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИ (https://github.com/vuejs/vue/issues/9180#issuecomment-446168296)

рд╕рд┐рдбреЗрдиреЛрдЯ: рдЕрдм, рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рд▓реЛрдЧреЛрдВ рдХреЛ рддрддреНрд╡реЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рдЖрднрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░
рдирд┐рд░реНрджреЗрд╢, рдХрд┐ рд╡реЗ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдореЗрдВ рдЕрдиреНрдп рд╕реНрдХреЛрдк рдФрд░ рд╕реНрдХреЛрдк рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣реИ рдирд╛? ЁЯдФ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕реНрд▓реЙрдЯ рд╕реНрдХреЛрдк рдХреЛ рдиреЗрд╕реНрдЯреЗрдб рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣реИ рдирд╛? ЁЯдФ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕реНрд▓реЙрдЯ рд╕реНрдХреЛрдк рдХреЛ рдиреЗрд╕реНрдЯреЗрдб рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ

рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдШреЛрдВрд╕рд▓рд╛ рдирд╣реАрдВ рдмрдирд╛рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рд╕рд╣реЛрджрд░ рд╕реНрд▓реЙрдЯ рд╣реИрдВред рдореИрдВрдиреЗ рдШрдЯрдХ рдкрд░ v-scope рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд▓реЙрдЯ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ (рдЬреЛ рдПрдХ рднрд╛рдИ рд╕реНрд▓реЙрдЯ рд╣реИ) <template slot="someName">
рджреЗрдЦреЛ? рдпрд╣ рднреНрд░рд╛рдордХ рд╣реИ ^^

@LinusBorg рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╣реИ:

  • рдЬрдм рдШрдЯрдХ рдкрд░ рд╕реАрдзреЗ v-scope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  • рдпрджрд┐ рдЖрдк рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ... рдЖрдкрдХреЛ рдЕрднреА рднреА slot + slot-scope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ v-scope рдФрд░ slot-scope рдХрд╛ рд╣реЛрдирд╛ рдЕрд╕рдВрдЧрдд/рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╛рдЗрди рдкрд░ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рддреЛрдбрд╝рдирд╛

рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ:

  • рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░реЗрдВ
  • рдпрд╣ рдХрд╣рдиреЗ рд╕реЗ рдмрдЪреЗрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд▓реЙрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ
  • рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирдП рдПрдкреАрдЖрдИ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░реЗрдВ
  • рдПрдкреАрдЖрдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рди рд▓рдЧрд╛рдПрдВ рдЬрд╣рд╛рдВ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ
  • рдбреЗрдЯрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░рд╣реЗрдВ

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрди рд╕рднреА рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ! ЁЯдЮ $event рд▓рд┐рдП v-on , рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд╛рдорд┐рдд рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдПрдХ рдорд┐рд╕рд╛рд▓ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреНрд░рдо рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рд╣рдореЗрдВ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди

v-scope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╕реНрд▓реЙрдЯ рд╕реНрдХреЛрдк рдХреЛ $slot рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<TodoList :todos="todos">
  {{ $slot.todo.text }}

  <template slot="metaBar">
    You have {{ $slot.totals.incomplete }} todos left.
  </template>
</TodoList>

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдЪрд╛рдЗрд▓реНрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

<ul>
  <li v-for="todo in todos">
    <slot :todo="todo" />
  </li>
</ul>

<div>
  <slot name="metaBar" v-bind="itemsStats" />
</div>

рдЬрдм рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ $slot рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд▓реЙрдЯ рдбреЗрдЯрд╛ рдХреЛ рдорд░реНрдЬ рдХрд░ рджреЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рдмрд╕реЗ рднреАрддрд░реА рд╕реНрд▓реЙрдЯреНрд╕ рдУрд╡рд░рд░рд╛рдЗрдб рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд▓реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдВ:

<Outer>
  <Middle>
    <Inner>
      {{ $slot }}
    </Inner>
  </Middle>
</Outer>

рд╡рд┐рд▓рдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

$slot = {
  ...outerSlotData,
  ...middleSlotData,
  ...innerSlotData
}

рдЖрдк рдирд╛рдорд╕реНрдерд╛рди рдУрд╡рд░рд▓реИрдк рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд/рдЖрд╢реНрдЪрд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ 99.9% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдИ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<UserData id="chrisvfritz">
  My email is {{ $slot.user.email }}, but you can reach Sarah at
  <UserData id="sdras">
    {{ $slot.user.email }}
  </UserData>.
</UserData>

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реНрдХреЛрдк рдХреЗ рдмрд╛рд╡рдЬреВрдж, $slot.user рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдорд╛рди рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреИрд╕реЗ рдХрд┐:

<UserData id="chrisvfritz">
  <template slot-scope="me">
    <UserData id="sdras">
      <template slot-scope="sarah">
        <CollaborationPageLink :user-ids="[me.user.id, sarah.user.id]">
          View your collaboration history
        </CollaborationPageLink>
      </template>
    </UserData>
  </template>
</UserData>

рдЗрди рджреБрд░реНрд▓рдн рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА slot-scope рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рд▓реЗрдХрд┐рди v-scope рдЕрднреА рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ $slot рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдкреВрд░рд╛ рдХрд░ рдЪреБрдХрд╛ рд╣реЛрдЧрд╛ред

рд▓рд╛рдн

  • рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд▓реЙрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдПрдХрдорд╛рддреНрд░ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ $slot , рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░рд╣рддреЗ рд╣реБрдП

  • рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕ рд╕реНрд▓реЙрдЯ (рдЦрд╛рддреЛрдВ) рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдПрдЧреА ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ v-scope , рдпрд╣ рдорд╛рдирдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рднреНрд░рдо рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ v-for рдЬреИрд╕рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬреЛ рд╕реНрдХреЛрдкреНрдб рд╕рдВрджрд░реНрдн рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдФрд░ рд╕рд╣рдЬ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ , рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред

  • рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде рдЬреЛ рд╕рднреА рд░рд╛рдЬреНрдп рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдШрдЯрдХ рдХреБрдЫ рд░рд╛рдЬреНрдп рд╕реЗ рдЖрдпрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ slot-scope рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдиреБрдХрд╕рд╛рди рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЙрдкреНрдб рд╕реНрд▓реЙрдЯ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд░рд╛рдЬреНрдп рдкреНрд░рджрд╛рддрд╛ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рддрд░реНрдХ рд╣реИ ред рддреЛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЙрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рдЕрдзрд┐рдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред

  • рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ Vue рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдХреЗрд╡рд▓ $slot рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд╕реНрддреБ рд╣реИред

  • рдПрдХ $ -prefixed рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд╡реЗрдм рдШрдЯрдХ рд╕реНрд▓реЙрдЯ API рдкрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ $slot рдПрдХ Vue рдЪреАрдЬрд╝ рд╣реИред

  • рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЕрдХреНрд╕рд░ рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рдирд╛ <slot v-bind="user" /> , рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╡рд░реНрдг рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ slot-scope="user" рдХреЗ рдмрдЬрд╛рдп slot-scope="{ user } ред рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрднрд╡ рд╣реБрдЖ рд╣реИред рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдШрдЯрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ _рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдлрд┐рд░ рдЙрдирдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ: рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ рдпрд╛ рдЗрд╕ рдирдИ рд╕рдВрдкрддреНрддрд┐ рдХреЛ user рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдмрд╛рдзреНрдп рдХрд░реЗрдВ, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХрдо рд╕рдВрдмрдВрдз рд╣реЛред рди рддреЛ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, $slot рдШрдЯрдХреЛрдВ рдХреЛ рдХрдо рднрд╡рд┐рд╖реНрдп-рд╕рдмреВрдд рдмрдирд╛рдиреЗ рдХреЗ рдкреНрд░рд▓реЛрднрди рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ , рдХреНрдпреЛрдВрдХрд┐ рдЬрдмрдХрд┐ $slot рдЕрднреА рднреА $slot.user рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ $slot рд░реВрдк рдореЗрдВ рдЕрд▓рд┐рдпрд╛рд╕ рдХрд░рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддреЗ рд╣реИрдВ

рдиреБрдХрд╕рд╛рди

  • рдХреБрдЫ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЙрдкреНрдб рд╕реНрд▓реЙрдЯ рдореЗрдВ, рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд┐рд╕ рдШрдЯрдХ рд╕реЗ рдЖрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА slot-scope рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХрддрдо рдЦреЛрдЬрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд╛рдЬреНрдп рдкреНрд░рджрд╛рддрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЧреЛрд▓реА рдорд╛рд░ рд░рд╣рд╛ рд╣реИ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ $ -prefixed рд╕рдВрдкрддреНрддрд┐ рдкреВрд░реЗ Vue рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдВрджрд░ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд▓реЙрдЯ рдореЗрдВ $slot рдХреЛ рдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдХреЗ рднреНрд░рдо рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рд╕реНрд▓реЙрдЯ рд╕реНрдХреЛрдк рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝реЗ рд╣реИрдВред рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ рд╕рдореНрдореЗрд▓рди рд╣реИ (рдореЗрд░реЗ рдЕрд╡рд▓реЛрдХрди рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдХрд┐ $ -prefixed рдЧреБрдг рдкреНрд░рддреНрдпреЗрдХ Vue рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣реАрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ, рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ $slot рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рдкрд░рдВрдкрд░рд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред

@chrisvfritz рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд▓реЙрдЯреНрд╕ рдФрд░ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рдХреЗ рдПрдХреАрдХреГрдд рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдХреБрдЫ рдРрд╕рд╛ рдЬрд┐рд╕реЗ v3 рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрд▓реЙрдЯ рд╕рд╛рдордЧреНрд░реА рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ $slots рдпрд╛ $scopedSlots рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдПрдХрдорд╛рддреНрд░ рд╕рдВрдХреЗрдд $slot рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд╣реАрдВ рдореМрдЬреВрдж рд╣реИ (рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдХрд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдЬреЛ slot-scope (рдЬреЛ рдХреЗрд╡рд▓ рд╕реНрд▓реЙрдЯ рд░реВрдЯ рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдЬрд┐рддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдпрджреНрдпрдкрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╣рдо рд╕рдВрдХрд▓рдХ рдореЗрдВ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд▓реЙрдЯ $slots рд╕реЗ $scopedSlots рдЬрдм рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ $slot рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ ...

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ JSX рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдХреЛрдИ рдмрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛?

@donnysim рдирд╣реАрдВ, рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ $ -prefixed рд╕рдВрдкрддреНрддрд┐ рдкреВрд░реЗ Vue рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдВрджрд░ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд▓реЙрдЯ рдореЗрдВ $slot рдХреЛ рдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдХреЗ рднреНрд░рдо рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рд╕реНрд▓реЙрдЯ рд╕реНрдХреЛрдк рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝реЗ рд╣реИрдВред

@Justineo рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдпрд╣реА рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ $event рдФрд░ рдХреЛрдИ рднреА рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _is_ рдорд┐рд╕рд╛рд▓ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдмреВрдд рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдорддреМрд░ рдкрд░ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрд▓реЙрдЯ рд╕рд╛рдордЧреНрд░реА рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ $slots рдпрд╛ $scopedSlots рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП?

@yyx990803 рдмрдврд╝рд┐рдпрд╛ рд╕рд╡рд╛рд▓! рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ ( $slot рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрд▓реЙрдЯ), рд╣рдо рд╕рднреА рд╕реНрд▓реЙрдЯ рдХреЛ рдПрдХ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА $scopedSlots $slots рдХреЛ рдЧреЗрдЯрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ

for (const slotName in vm.$scopedSlots) {
  // Don't override existing slots of the same name,
  // since that's _technically_ possible right now.
  if (vm.$slots[slotName]) continue

  Object.defineProperty(vm.$slots, slotName, {
    get: vm.$scopedSlots[slotName],
    enumerable: true,
    configurable: true,
    writable: true
  })
}

рдЗрд╕ рддрд░рд╣, рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ:

<A>
  <B>
    {{ $slot.foo }}
  </B>
</A>

рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

// Assume new render helper:
// _r = mergeSlotData

_c('A', {
  scopedSlots: _u([
    {
      key: 'default',
      fn: function(_sd) {
        var $slot = _r($slot, _sd)
        return [
          _c('B', {
            scopedSlots: _u([
              {
                key: 'default',
                fn: function(_sd) {
                  var $slot = _r($slot, _sd)
                  return [_v(_s($slot.foo))]
                },
              },
            ]),
          }),
        ]
      },
    },
  ]),
}) 

рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛ рдХрд┐ foo <A> рд╕реЗ рдЖрддрд╛ рд╣реИ рдпрд╛ <B> , рдХреНрдпреЛрдВрдХрд┐ рдЙрди рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ this.$slots.default рдФрд░ this.$scopedSlots.default(someData) рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдпреБрдЧрд▓ рдЪреЗрддрд╛рд╡рдиреА:

  • рдиреЗрд╕реНрдЯреЗрдб рд╕реНрд▓реЙрдЯ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдХреЛрдк рд╣реИрдВ, $slot рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди slot-scope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реИред

  • рдореИрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ $slots / $scopedSlots рд╕реЗ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдирдП рдпрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЧреБрдг рд╣реЛрдиреЗ рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдкреИрдЯрд░реНрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд╛рдорд┐рдд $slots рдФрд░ $scopedSlots рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЧрдП рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╡рд┐рдЪрд╛рд░?

рд╣рдо рдЗрд╕реЗ $event рдФрд░ рдХреЛрдИ рднреА рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

@chrisvfritz рдУрд╣, рдореИрдВ $event рдЪреАрдЬрд╝ рд╕реЗ рдЪреВрдХ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдореНрдореЗрд▓рди рдХрд╛ рдЕрдкрд╡рд╛рдж рд╣реИ (рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ ЁЯШЕ рд╣реИ), $event рдХреЗрд╡рд▓ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реАрдорд┐рдд рджрд╛рдпрд░реЗ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ (рдХреЗрд╡рд▓ рд╡реА-рдмрд╛рдЗрдВрдб рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдХреНрд╖рд░ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдХреЛрдИ рдШреЛрдВрд╕рд▓рд╛ рдирд╣реАрдВ)ред

рдФрд░ $scopedSlots рдХреЛ $slots рдкрд░ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдерд╛ рдХрд┐ рд╕реНрд▓реЙрдЯ рдФрд░ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВ рдФрд░ Vue рдХрд╛ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдирд╛рдо рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реНрд▓реЙрдЯ рдФрд░ рдПрдХ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреА рдкреВрд░реНрддрд┐ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдХреЛрдк рд╕реНрд▓реЙрдЯ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ Vue рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕реА рдирд╛рдо рдХреЗ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдирд╛ тАЛтАЛрдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ $slots рдФрд░ $scopedSlots рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╣рдореЗрд╢рд╛ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ/рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред , рдЬреИрд╕реЗ рд╕рднреА рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдХрд┐рд╕реА рдПрдХрд▓ рдЖрдЗрдЯрдо рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рд╣реИ (рд╣рдордиреЗ рдЕрдкрдиреЗ рдбреЙрдХреНрд╕ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб AFAIK рдореЗрдВ рдЗрд╕ рдкрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ) рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ 3.0 рдореЗрдВ рд╕реНрд▓реЙрдЯ рдХреА рдПрдХрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 2.x рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ рдХрд╛рдлреА рд╕рдордп рдкрд╣рд▓реЗ рд╕реЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рд╣рдо рдЙрдиреНрд╣реЗрдВ 3.0 рдореЗрдВ рд╕реНрд▓реЙрдЯ рдХреА рдПрдХрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 2.x рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдлреА рд╕рдордп рдкрд╣рд▓реЗ рд╕реЗ рдЕрдиреБрдордд рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред

@ рдЬрд╕реНрдЯрд┐рдиреЛ рдореБрдЭреЗ рдЧрд▓рддрдлрд╣рдореА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 2.x рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ - рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдлрд╝реЙрд▓рдмреИрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛, рдЬрд╣рд╛рдВ $slots рдФрд░ $scopedSlots рд╕рдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рднреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ slot-scope рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<div>
  Default slot
  <template slot-scope="foo">
    Default scoped slot {{ foo }}
  </template>
</div>

рдЕрднреА рднреА рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?

@chrisvfritz

рдореИрдВ рдЙрдиреНрд╣реЗрдВ 2.x рдореЗрдВ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рдХрд╣ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:

рдЧреЗрдЯрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ $slots рддрд╣рдд рд╕рднреА $scopedSlots рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ

рдЖрдк $slots.foo рдХреЛ $scopedSlots.foo рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдм рдЙрдиреНрд╣реЗрдВ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк $slots.foo рдХреЛ $scopedSlots.foo рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдм рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рд╕рдм рдХреБрдЫ (рд╕реНрд▓реЙрдЯ рдФрд░ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ) рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рдФрд░ рдмреЗрдХрд╛рд░ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╕реНрд▓реЙрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдорд┐рд╢реНрд░рд┐рдд JSX рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИред

@donnysim рд╣рд╛рдВ рдореИрдВ https://github.com/vuejs/vue/issues/9180#issuecomment -447185512 рдореЗрдВ рдРрд╕реА рдЪрд┐рдВрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдЖрдк $slots.foo рдХреЛ $scopedSlots.foo рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдм рдЙрдиреНрд╣реЗрдВ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@Justineo рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _can_, рд╣рдо рдЗрд╕ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЬрдм рддрдХ $slots рдкрд╣рд▓реЗ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрд▓реЙрдЯ рдХреА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦреЗрдВ:

for (const slotName in vm.$scopedSlots) {
  // Don't override existing slots of the same name,
  // since that's _technically_ possible right now.
  if (vm.$slots[slotName]) continue

  Object.defineProperty(vm.$slots, slotName, {
    get: vm.$scopedSlots[slotName],
    enumerable: true,
    configurable: true,
    writable: true
  })
}

@chrisvfritz

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

render (h) {
  if (!this.$slots.default) {
    return h(
      'div',
      this.items.map(item => this.$scopedSlots.default(item))
    )
  }
  return h('div', this.$slots.default)
}

рдпрджрд┐ рдШрдЯрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ vm.$scopedSlots.default , рддреЛ рдЙрд╕реЗ this.items рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ item s рдХреЛ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЕрдм рдЬрдмрдХрд┐ vm.$scopedSlot.default рдЕрдм рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рд╣реИ рдФрд░ рдпрд╣ рдореМрдЬреВрдж рд╣реИ, рд╕реНрд▓реЙрдЯ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@ рдЬрд╕реНрдЯрд┐рдиреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкреИрдЯрд░реНрди рдмрджрд▓рдХрд░ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛:

if (!this.$slots.default) {

рдкреНрд░рддрд┐:

if (this.$scopedSlots.default) {

рдпрд╛, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрднреА-рдХрднреА рдПрдХ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

if (!Object.getOwnPropertyDescriptor(this.$slots, 'default').value) {

рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдорд╛рдиреВрдВрдЧрд╛ред рдкрд╣рд▓рд╛, рд╣рдордиреЗ рдХрднреА рднреА рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕реНрд▓реЙрдЯ рдФрд░ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг/рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрднреА рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдмрдВрдз рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рдерд╛ред рджреВрд╕рд░рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд╕реНрдХреЛрдк рдХрд┐рдП рдЧрдП рд╕реНрд▓реЙрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕реА рдирд╛рдо рдХреЗ рдЧреИрд░-рд╕реНрдХреЛрдк рд╡рд╛рд▓реЗ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдЪреНрдЫреЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрднреА рднреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреЛрдкреНрдб/рдЧреИрд░-рд╕реНрдХреЛрдкреНрдб рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдереЗред

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ? рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реНрд▓реЙрдЯ рдирд╛рдореЛрдВ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рджреЗрдЦреЗ рд╣реИрдВ? рдпрд╛ рдЖрдк рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд╣рд╛рдБ _are_ рдЙрдкрдпреЛрдЧреА рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рдкреИрдЯрд░реНрди рд╕рдХреНрд╖рдо рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рд╕реАрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ Vue 3 рдореЗрдВ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рдирд┐рд░реНрдгрдп рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдирд╛рдо рд╡рд╛рд▓реЗ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдФрд░ рд╕реНрд▓реЙрдЯ рд╣реИрдВ
рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ Vue рдХреЗ рдкреВрд░реНрд╡ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдерд╛
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рдФрд░ рдЕрдм рдореБрдЭреЗ рджреЛрдиреЛрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд▓реЙрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реИ
рдФрд░ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рддрд╛рдХрд┐ рджреЗрд╡ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╕реНрд▓реЙрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХреЗред
рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рд╕рд╣реА рдпрд╛рдж рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдирд╛рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ред

@chrisvfritz

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдкреИрдЯрд░реНрди рдорджрджрдЧрд╛рд░ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдмрд╕ рдХрд╣ рд░рд╣рд╛ рдерд╛, рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд╣рдордиреЗ рдХрднреА рднреА рд╕реНрд▓реЙрдЯреНрд╕ рдФрд░ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯреНрд╕ рдХреЗ рдмреАрдЪ рд╕рдорд╛рди рдирд╛рдо рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдХрднреА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИред рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдлрд╝реЙрд▓рдмреИрдХ рддрд░реНрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдЦреБрдж рдорд╛рдирддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╡реИрдз рдЙрдкрдпреЛрдЧ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рдлрд╝реЙрд▓рдмреИрдХ рддрд░реНрдХ рдирд╣реАрдВ рд╕реАрдЦрд╛ ...

@posva рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@Justineo рдЖрдкрдХреА рд░рд╛рдп рдореЗрдВ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдПрдЬ рдХреЗрд╕ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд░реНрдж рд╣реЛрдЧрд╛, рдпрд╛ рдпрд╣ Vue 2.x рдореЗрдВ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ API рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ?

рдЗрд╕реЗ "рдЯреЛрдбреЛ" рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЖрдо рд╕рд╣рдорддрд┐ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП?

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╣рдлреНрддреЗ рд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ @chrisvfritz рдХрд╛ $slot рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рд╣реИ рдФрд░ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд╡рд░реЛрдзрдХреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдпрд╣рд╛рдБ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрднрд╡ рд╣реИ:

  • рд╕рднреА рд╕реНрд▓реЙрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ 3.0 рдореЗрдВ), рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдФрд░ рд╕реНрдерд┐рд░ рд╕реНрд▓реЙрдЯ рдирд╣реАрдВ рд╣реИ (рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдШрдЯрдХ рдЕрдкрдбреЗрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ)
  • $scopedSlots рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд▓реЙрдЯ рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛
  • $slots рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЦрд╛рд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд▓реЙрдЯ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдЧрд╛ред

рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдордХрдХреНрд╖ рд╣реЛрдЧрд╛:

this.$slots.default
// would be the same as
this.$scopedSlots.default({} /* $slot */)

рдЙрдкрд░реЛрдХреНрдд рдЖрдВрддрд░рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде, $slots рдФрд░ $scopedSlots рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХреАрдХреГрдд рд╣реИрдВ рд▓реЗрдХрд┐рди рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП! рдЗрд╕рд╕реЗ 3.0 рддрдХ рдЖрд╕рд╛рди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд $slot рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдирдореВрдиреЗ:

<!-- list and item composition -->
<fancy-list>
  <fancy-item :item="$slot.item"/>
</fancy-list>
<!-- hypothetical data fetching component -->
<fetch :url="`/api/posts/${id}`">
  <div slot="success">{{ $slot.data }}</div>
  <div slot="error">{{ $slot.error }}</div>
  <div slot="pending">pending...</div>
</fetch>

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЛрдк рдорд░реНрдЬ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ (рдпрд╛рдиреА рд╣рдореЗрд╢рд╛ slot-scope рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЙрдкреНрдб рд╕реНрд▓реЙрдЯ рд╣реИрдВ):

<!-- nested usage -->
<foo>
  <bar slot-scope="foo">
    <baz slot-scope="bar">
      {{ foo }} {{ bar }} {{ $slot }}
    </baz>
  </bar>
</foo>

рдЖрдкрдХреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, $slot рдХрд┐рд╕ рд╕реНрд▓реЙрдЯ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ?

@Akryum рдпрд╣ { ...foo, ...bar } ред

@Justineo @Akryum рд╣рдореНрдо рдореИрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ... рд╣рдо рдмрдирд╛ slot-scope рдПрдХ рд╕реНрд▓реЙрдЯ рдХреЗ рдореВрд▓ рддрддреНрд╡ рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рдпрд╛рдиреА рдпрд╣рд╛рдВ foo рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рд╕реНрд▓реЙрдЯ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ <foo/> , bar <bar/> рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ $slot рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ <baz/> ... рдЕрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдПрдХ рдЧрд▓рддреА рдереА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдЧрд╛:

<!-- nested usage -->
<foo slot-scope="foo">
  <bar slot-scope="bar">
    <baz slot-scope="baz">
      {{ foo }} {{ bar }} {{ baz }}
    </baz>
  </bar>
</foo>

рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛

рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣рдорддред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
```рджреГрд╢реНрдп

<FieldValidation field="login" slot-scope="{ value, setValue, error }">
  <LoginInput
    :value="value"
    :error="error"
    @input="setValue"
  />
</FieldValidation>

<FieldValidation field="password" slot-scope="{ value, setValue, error }">
  <PasswordInput
    :value="value"
    :error="error"
    @input="setValue"
  />
</FieldValidation>

7988a554 рдФрд░ 5d52262f . рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдВрдж

рд╕рд╛рд░рд╛рдВрд╢:

  • рд╕рднреА рд╕реНрд▓реЙрдЯ рдореЗрдВ $slot рдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВред ( $slot рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╕реНрд▓реЙрдЯ рдХреЛ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

  • рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд▓реЙрдЯ рд╕рд╣рд┐рдд рд╕рднреА рд╕реНрд▓реЙрдЯ рдЕрдм рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ this.$scopedSlots рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ this.$slots.default рдореМрдЬреВрдж рд╣реИ, рддреЛ this.$scopedSlots.default() рдЕрдкрдирд╛ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рдпрд╣ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣рдореЗрд╢рд╛ this.$scopedSlot рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдм рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд▓реЙрдЯ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ 3.0 рдХреЗ рд╕рд╛рде рднреА рд╕рдВрдЧрдд рд╣реИ рдЬрд╣рд╛рдВ рд╕рднреА рд╕реНрд▓реЙрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп this.$slots )ред

  • slot-scope рдЙрдкрдпреЛрдЧ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ, рдирдП рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдХреЛрдИ рдкрд░рд┐рдЪрдп рдирд╣реАрдВред рд╣рдо рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЯреВрдЯ-рдлреВрдЯ рдХреЛ 3.0 рдкрд░ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@ yyx990803 рдХреНрдпрд╛ $slot рд╕рднреА рдмрд╛рд╣рд░реА рд╕реНрд▓реЙрдЯ рд╕реНрдХреЛрдк рдХреЛ рдорд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдХреЗрд╡рд▓ рдирд┐рдХрдЯрддрдо рд╕реНрд▓реЙрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ?

@Justineo рдХреЛрдИ рд╡рд┐рд▓рдп рдирд╣реАрдВ, рдмрд╕ рдирд┐рдХрдЯрддрдоред

рдореЗрд░реЗ рдкрд╛рд╕ рдЬрд┐рди рдРрдкреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЙрдирдореЗрдВ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ $slot рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрд▓реЙрдЯ рдорд░реНрдЬрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореВрд▓ рдШрдЯрдХ рдЖрдорддреМрд░ рдкрд░ рдХрдЪреНрдЪреЗ HTML рддрддреНрд╡реЛрдВ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрди рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрд▓реЙрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<MapMarkers :markers="cities">
  <BaseIcon name="map-marker">
    {{ $slot.marker.name }}
  </BaseIcon>
</MapMarkers>

рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, <MapMarkers> рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрдХреЛрдк рд╕реНрд▓реЙрдЯ рд╣реИред <BaseIcon> рдПрдХ рдЧреИрд░-рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реНрд▓реЙрдЯ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, $slot рд╡рд┐рд▓рдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рд╣реЛрдЧреА, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рдВрдХрд┐рдпрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдлреИрдХреНрдЯрд░ рдордЬрдмреВрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛:

<MapMarkers :markers="cities">
  <template slot-scope="{ marker }">
    <BaseIcon name="map-marker">
      {{ marker.name }}
    </BaseIcon>
  </template>
</MapMarkers>

рддреЛ рдпрд╣рд╛рдБ рдореЗрд░реА рдЪрд┐рдВрддрд╛рдПрдБ рд╣реИрдВ:

  • рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирдореВрдиреЗ рд╕реЗ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ $slot рдХреЗ рд▓рд╛рдн рдХрд╛ _most_ рдЦреЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЖрдВрддрд░рд┐рдХ рд╕реНрд▓реЙрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЕрдЪреНрдЫреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдиреБрдХрд╕рд╛рди рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдПрдкреАрдЖрдИ рд╣реИред

  • UI рд▓рд╛рдЗрдмреНрд░реЗрд░реА v-html рд╕рд╛рде рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрд▓реЙрдЯ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдВрдЧреЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╢рд┐рдХрд╛рдпрддреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ $slot рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдзрд╛рд░ рдШрдЯрдХреЛрдВ рд╕реЗ рдкрд░рд╣реЗрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╕реНрдХреЛрдкреНрдб рд╕реНрд▓реЙрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ, рдЬрд┐рд╕рд╕реЗ рдХрдо рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЧреНрдп рдХреЛрдб рд╣реЛ рд╕рдХреЗред

@ yyx990803 рдХреНрдпрд╛ рдЖрдкрдХреА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ $slot рд╡рд┐рд▓рдп рд╕реЗ рд╣реИ рдХрд┐ рдпрд╣ рдмрддрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рдШрдЯрдХ рд╕реНрд▓реЙрдЯ рдбреЗрдЯрд╛ рд╕реЗ рдЖрдпрд╛ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЛрдк рд╕реНрд▓реЙрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рд░рд╛рдЬреНрдп рдкреНрд░рджрд╛рддрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдереЗ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛ рд╣реИред рддреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реЛрдВрдЧреЗред рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рд▓рдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рд▓рд┐рдП рдпрд╣ рддрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЦреЛрдЬрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдФрд░ рдЬрдм рд╡реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣реА slot-scope рд▓рд┐рдП рдореМрдЬреВрдж рд╣реЛрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╕рдордЭреМрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИ: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЛрдк рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ $slot рдирд┐рдХрдЯрддрдо рд╕реНрд▓реЙрдЯ рдХреЛ рджреЗрдЦреЗрдВ _ рдЬрд┐рд╕рдиреЗ рдПрдХ рд╕реНрдХреЛрдк рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реЛ? рдпрд╣ рдореЗрд░реА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рддреЗ рд╣реБрдП рд╕рдмрд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░?

рд╡рд┐рд▓рдп рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░рдг рдЧреИрд░-рд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИ: рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкрдврд╝рдХрд░, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреМрди рд╕реА $slot рд╕рдВрдкрддреНрддрд┐ рдХрд┐рд╕ рдкреНрд░рджрд╛рддрд╛ рдШрдЯрдХ рд╕реЗ рдЖрддреА рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╛рдирд╕рд┐рдХ рднрд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдЗрд╕реЗ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реЛрдВ рддреЛ рдпрд╣ рдареАрдХ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдкреВрд░рд╛ рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ (рдЪрд╛рд╣реЗ рд╡рд╣ рдЖрдк рдпрд╛ рдЯреАрдо рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕рджрд╕реНрдп рд╣реЛ)ред

$slot рдирд┐рдХрдЯрддрдо рд╕реНрд▓реЙрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рджрд╛рдпрд░рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╣ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ: рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдШрдЯрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд▓рдп рд╕реЗ рднреА рдЕрдзрд┐рдХ рдирд┐рд╣рд┐рдд рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред


рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди slot-scope рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо/рд╡рд┐рдирд╛рд╢ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдмрди рдЬрд╛рдП $slot ред рддреЛ рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

<MapMarkers :markers="cities" slot-scope="{ marker }">
  <BaseIcon name="map-marker">
    {{ marker.name }}
  </BaseIcon>
</MapMarkers>

рдпрд╣ рд╡рд┐рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЪрд░ рдХрд┐рд╕ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рдЕрддреНрдпрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИред (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 3.0 рдореЗрдВ рд╣рдо рд╢рд╛рдпрдж рдпрд╣реА рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ)

рдЕрднреА рд╣рдо рдЬрд┐рд╕ рдЕрдЬреАрдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЧреИрд░-рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ slot-scope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ, рдФрд░ рдЕрдм рдпрд╣ рд╣рдореЗрдВ рдШрдЯрдХ рдкрд░ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

3.0 рдореЗрдВ рдЗрд╕рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рднреА рдмрд╣реБрдд рднреНрд░рдо рдФрд░ рдкреНрд░рд╡рд╛рд╕рди рджрд░реНрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдирдИ рд╕рдВрдкрддреНрддрд┐, slot-alias рдкреЗрд╢ рдХрд░рдХреЗ рд╕рдордп рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ - $slot рдХреЛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдкрд░ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХрд░рдирд╛ред slot-scope рд╡рд┐рдкрд░реАрдд, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдШрдЯрдХ рдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрд▓реЙрдЯ рдХрдВрдЯреЗрдирд░ рдкрд░ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ slot-scope рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм <template> рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) :

рдиреЗрд╕реНрдЯреЗрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд▓реЙрдЯ:

<MapMarkers :markers="cities" slot-alias="{ marker }">
  <BaseIcon name="map-marker">
    {{ marker.name }}
  </BaseIcon>
</MapMarkers>
<foo slot-alias="foo">
  <bar slot-alias="bar">
    <baz slot-alias="baz">
      {{ foo }} {{ bar }} {{ baz }}
    </baz>
  </bar>
</foo>

рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ:

рдПрдХрдорд╛рддреНрд░ рдорд╛рдорд▓рд╛ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд░реНрдмреЛрдЬрд╝ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реНрд▓реЙрдЯреНрд╕ рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

<foo>
  <template slot="a" slot-alias="a">
     <bar slot-alias="b">
        {{ a }} {{ b }}
     </bar>
  </template>
</foo>

(рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ slot-scope рдФрд░ slot-alias рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ slot-scope рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ)

<foo>
   <bar slot="a" slot-scope="a" slot-scope="b">
      {{ a }} {{ b }}
   </bar>
</foo>

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рднреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, () (рдХреНрдпреЛрдВрдХрд┐ JSX рдореЗрдВ рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕ рдЖрдорддреМрд░ рдкрд░ рдПрд░реЛ рдлрдВрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ () ):

<MapMarkers :markers="cities" ()="{ marker }">
  <BaseIcon name="map-marker">
    {{ marker.name }}
  </BaseIcon>
</MapMarkers>
<foo ()="foo">
  <bar ()="bar">
    <baz ()="baz">
      {{ foo }} {{ bar }} {{ baz }}
    </baz>
  </bar>
</foo>

рдЙрдкрд░реЛрдХреНрдд рдХреА рддреБрд▓рдирд╛ рд╕рдордХрдХреНрд╖ JSX рд╕реЗ рдХрд░реЗрдВ:

<foo>
  {foo => (
    <bar>
      {bar => (
        <baz>
          {baz => `${foo} ${bar} ${baz}`}
        </baz>
      )}
    </bar>
  )}
</foo>

рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдмрд╛рдж рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЕрдм рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдирдпрд╛ рдзрд╛рдЧрд╛ рдЦреЛрд▓рдирд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

loki0609 picture loki0609  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

robertleeplummerjr picture robertleeplummerjr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bfis picture bfis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

6pm picture 6pm  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fergaldoyle picture fergaldoyle  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ