82 votes

Éviter l'erreur eslint no-shadow avec mapDispatchToProps

J'ai le composant suivant qui déclenche un no-shadow Erreur ESlint sur la page FilterButton props .

import { setFilter } from '../actions/filter';

function FilterButton({ setFilter }) {
  return (
    <button onClick={setFilter}>Click</button>
  );
}

export default connect(null, { setFilter })(FilterButton);

Comment éviter l'avertissement tout en conservant la syntaxe concise de mapDispatchToProps et la règle ESlint ?

Je sais que je peux ajouter un commentaire pour supprimer l'avertissement, mais le faire pour chaque composant semble redondant et fastidieux.

0 votes

Vous pouvez renommer setFilter ( FilterButton({ setFilter }) a FilterButton({ setFilter }) ). C'est logique (en quelque sorte) parce que les fonctions qui sont dans FilterButton Les accessoires de l'artiste sont en fait l'original setFilter avec le dispatch qui lui est liée.

0 votes

Avant et après le changement de nom, les données sont identiques.

0 votes

Je voulais dire renommer uniquement dans function FilterButton({ setFilter }) { y <button onClick={setFilter}>Click</button> . Pouvez-vous mettre à jour votre question avec le code modifié ?

3voto

Bogidon Points 30

Option 7...

7. Utiliser les composants du conteneur

Pourquoi ?

Il s'agit d'un modèle connu et vous obtenez l'avantage supplémentaire de découpler vos composants du magasin redux, ce qui facilite leur réutilisation.

Pourquoi pas ?

Vous avez maintenant besoin de deux fichiers par composant.

Comment ?

// FilterButton.jsx

export default function FilterButton({ setFilter }) {
  return (
    <button onClick={setFilter}>Click</button>
  );
}

// FilterButtonRedux.jsx

import FilterButton from './FilterButton';
import { setFilter } from '../actions/filter';

export default connect(null, { setFilter })(FilterButton);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X