Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

147
Views
¿Debo crear estas funciones en el componente principal y pasarlas al elemento secundario para mejorar el rendimiento? ¿O es Svelte capaz de "izarlos"?

Digamos que tengo un componente:

  • Página.esbelta:
 <script lang="ts"> const players: Player[] = getPlayersFromSomewhere() </script> {#each players || [] as player} <Player {player} /> {/each}
  • y Player.svelte:
 <script lang="ts"> export let player: Player; async function doSomethingWithPlayer() { // many lines of code here... } async function doSomethingElse() { // many lines of code here... } async function doSomethingElseAgain() { // many lines of code here... } // ... many functions here </script> player is used here with many buttons like: <button on:click={doSomethingWithPlayer}>...</button> <button on:click={doSomethingElse}>...</button> <button on:click={doSomethingElseAgain}>...</button>

LA PREGUNTA ES

¿Svelte está recreando las funciones en Player.svelte para cada jugador o solo las está usando una vez para cada jugador?

¿Debo crear las funciones en Page.svelte y pasarlas a Player.svelte ? ¿O es Svelte capaz de "izarlos"?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Svelte levantará automáticamente las funciones que no dependen del estado del componente local. De los documentos :

No se preocupe por el hecho de que estamos volviendo a declarar la función foo para cada instancia de componente: Svelte extraerá cualquier función que no dependa del estado local de la definición del componente.

Puede ver este comportamiento en Svelte REPL. Considere el siguiente componente.

 <script> let name = 'world'; function changeName() { name = name + 1; } function log() { console.log("I'm independent") } </script> <h1>Hello {name}!</h1> <button on:click={changeName}> Change </button> <button on:click={log}> Log </button>

changeName depende del estado del componente, pero log no, por lo que se extrae del componente. Verá lo siguiente en el JS compilado: solo hay una función de log , pero changeName se crea por instancia.

 function log() { console.log("I'm independent"); } function instance($$self, $$props, $$invalidate) { let name = 'world'; function changeName() { $$invalidate(0, name = name + 1); } return [name, changeName]; } class App extends SvelteComponent { constructor(options) { super(); init(this, options, instance, create_fragment, safe_not_equal, {}); } }
about 4 years ago · Juan Pablo Isaza Report

0

Puede usar el contexto del módulo para ejecutar el código solo una vez, independientemente de cuántas veces inicialice el componente. Le recomiendo que mire esta respuesta de Rich Harris y el tutorial de contexto del módulo oficial.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!