82 votes

Évitez l'erreur eslint no-shadow avec mapDispatchToProps

J'ai le composant suivant qui déclenche une erreur ESlint no-shadow sur les props de FilterButton.

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

function FilterButton({ setFilter }) {
  return (
    Click
  );
}

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

Comment puis-je éviter l'avertissement tout en conservant à la fois 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 }) en FilterButton({ setFilter })). Cela a du sens (en quelque sorte) car la fonction qui se trouve dans les proprétés de FilterButton est en réalité l'originale setFilter avec la fonction dispatch qui lui est liée.

0 votes

Avant et après le renommage sont les mêmes.

0 votes

Je voulais simplement renommer dans function FilterButton({ setFilter }) { et Cliquez. Pouvez-vous mettre à jour votre question avec le code modifié?

3voto

Bogidon Points 30

Option 7...

7. Utilisez des composants conteneurs

Pourquoi?

C'est un modèle connu et vous bénéficiez de l'avantage supplémentaire de découpler vos composants du magasin redux, les rendant plus faciles à réutiliser.

Pourquoi pas?

Vous avez maintenant besoin de deux fichiers par composant.

Comment?

// FilterButton.jsx

export default function FilterButton({ setFilter }) {
  return (
    Cliquez
  );
}

// FilterButtonRedux.jsx

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

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

0 votes

Un autre point à "pourquoi pas" : il est désormais possible d'importer un composant avec un nom très similaire à celui prévu qui n'est pas connecté à redux.

0 votes

@tao_oat placez ces fichiers à l'intérieur d'un répertoire FilterButton/ avec un fichier index.js exportant uniquement le composant connecté. Cela permet d'avoir une API publique claire, et il est ensuite plus facile de tester unitairement le composant déconnecté isolé, par exemple à l'intérieur de FilterButton/FilterButton.test.jsx

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