You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

2.1 KiB

id title permalink prev next
jsx-spread-it-IT Attributi Spread JSX jsx-spread-it-IT.html jsx-in-depth-it-IT.html jsx-gotchas-it-IT.html

Se sai in anticipo che tutte le proprietà che desideri assegnare ad un componente, usare JSX è facile:

  var component = <Component foo={x} bar={y} />;

Le Props Mutevoli sono il Male

Se non sai quali proprietà desideri impostare, potresti essere tentato di aggiungerle all'oggetto in seguito:

  var component = <Component />;
  component.props.foo = x; // male
  component.props.bar = y; // altrettanto male

Questo è un anti-pattern perché significa che non possiamo aiutarti a verificare i propTypes per tempo. Ciò significa che i tuoi errori di propTypes finiscono per avere uno stack trace indecifrabile.

Le props dovrebbero essere considerate immutabili. Mutare l'oggetto props altrove potrebbe causare conseguenze inattese, quindi a questo punto dovrebbe essere idealmente considerato un oggetto congelato.

Attributi Spread

Adesso puoi utilizzare una nuova caratteristica di JSX chiamata attributi spread:

  var props = {};
  props.foo = x;
  props.bar = y;
  var component = <Component {...props} />;

Le proprietà dell'oggetto che passi al componente sono copiate nelle sue props.

Puoi usarlo più volte o combinarlo con altri attributi. L'ordine in cui sono specificati è rilevante. Attributi successivi ridefiniscono quelli precedentemente impostati.

  var props = { foo: 'default' };
  var component = <Component {...props} foo={'override'} />;
  console.log(component.props.foo); // 'override'

Cos'è la strana notazione ...?

L'operatore ... (o operatore spread) è già supportato per gli array in ES6. Esiste anche una proposta per ES7 per le proprietà Spread e Rest di Object. Stiamo prendendo spunto da questi standard supportati o in corso di sviluppo per fornire una sintassi più pulita a JSX.