Maison >interface Web >js tutoriel >Ensemble d'outils React pour une gestion efficace du code

Ensemble d'outils React pour une gestion efficace du code

Patricia Arquette
Patricia Arquetteoriginal
2024-10-19 22:35:29664parcourir

React Toolset for Efficient Code Management

Présentation

Cette documentation décrit une approche complète de la structuration et de la gestion des applications React à l'aide d'un ensemble organisé d'outils et de bonnes pratiques. En respectant ces directives, vous pouvez créer des applications évolutives, maintenables et efficaces.

Gestion de l'État

Zusstand :

  • Objectif : Fournit un moyen simple et performant de gérer l'état global des applications.
  • Avantages :
    • API claire et concise.
    • Mises à jour efficaces et optimisations des performances.
    • Intégration facile avec d'autres parties de l'application.
  • Exemple :
import create from 'zustand';

const useStore = create((set) => ({
  count: 0,
  increment: () => set((state) => ({ count: state.count + 1 })),
}));

Requête de réaction :

  • Objectif : Gère la récupération et la mise en cache asynchrones des données.
  • Avantages :
    • Récupération et mise en cache automatiques des données.
    • Gestion facile des états de chargement, d'erreur et de réussite.
    • Invalidation et récupération des requêtes intégrées.
  • Exemple :
import { useQuery } from 'react-query';

const fetchUsers = async () => {
  const response = await fetch('https://api.example.com/users');
  return response.json();
};

const UsersList = () => {
  const { isLoading, isError, data, error } = useQuery('users', fetchUsers);

  if (isLoading) return <div>Loading...</div>;
  if (isError) return <div>Error: {error.message}</div>;

  return (
    <ul>
      {data.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
};

Manipulation des données

Mutation :

  • Objectif : Gère les mutations d'état déclenchées par les actions de l'utilisateur ou les appels d'API.
  • Avantages :
    • Logique de mutation centralisée.
    • Intégration facile avec React Query pour des mises à jour optimistes.
  • Exemple :
import { useMutation } from 'react-query';

const createUser = async (userData) => {
  const response = await fetch('https://api.example.com/users', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(userData),
  });
  return response.json();
};

const CreateUserForm = () => {
  const [createUserMutation] = useMutation(createUser);

  const handleSubmit = (userData) => {
    createUserMutation(userData)
      .then(() => {
        // Handle success
      })
      .catch((error) => {
        // Handle error
      });
  };

  return (
    <form onSubmit={handleSubmit}>
      {/* Form fields */}
      <button type="submit">Create User</button>
    </form>
  );
};

Gestion des tables

Tableau TanStack :

  • Objectif : Fournit un composant de table flexible et performant.
  • Avantages :
    • Personnalisable et extensible.
    • Prend en charge de grands ensembles de données et des interactions complexes.
    • S'intègre bien à React Query pour la récupération de données.
  • Exemple :
import { useTable } from 'tanstack/react-table';

const columns = [
  { header: 'Name', accessor: 'name' },
  { header: 'Email', accessor: 'email' },
];

const data = [
  { name: 'John Doe', email: 'john@example.com' },
  // ...
];

const TableComponent = () => {
  const { getTableProps, getTableBodyProps, headerGroups, rows } = useTable({
    columns,
    data,
  });

  return (
    <table {...getTableProps()}>
      <thead>
        {headerGroups.map((headerGroup) => (
          <tr {...headerGroup.getHeaderGroupProps()}>
            {headerGroup.headers.map((column) => (
              <th {...column.getHeaderProps()}>{column.render('Header')}</th>
            ))}
          </tr>
        ))}
      </thead>
      <tbody {...getTableBodyProps()}>
        {rows.map((row) => (
          <tr {...row.getRowProps()}>
            {row.cells.map((cell) => (
              <td {...cell.getCellProps()}>{cell.render('Cell')}</td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  );
};

Bibliothèques de composants

Interface utilisateur Radix :

  • Objectif : Fournit une collection de composants d'interface utilisateur sans tête.
  • Avantages :
    • Personnalisable et flexible.
    • Se concentre sur les fonctionnalités de base sans style.
    • Bien intégré aux normes d'accessibilité.
  • Exemple :
import { Menu } from '@radix-ui/react-menu';

const MenuComponent = () => {
  return (
    <Menu>
      <Menu.Button>Open Menu</Menu.Button>
      <Menu.Items>
        <Menu.Item>Item 1</Menu.Item>
        <Menu.Item>Item 2</Menu.Item>
      </Menu.Items>
    </Menu>
  );
};

CSS Tailwind :

  • Objectif : Framework CSS axé sur l'utilitaire.
  • Avantages :
    • Développement et style rapides.
    • Style cohérent et prévisible.
    • Facilement personnalisable.
  • Exemple :
import create from 'zustand';

const useStore = create((set) => ({
  count: 0,
  increment: () => set((state) => ({ count: state.count + 1 })),
}));

Gestion des formulaires

Formik avec Ouais :

  • Objectif : Gère l'état, la validation et la soumission du formulaire.
  • Avantages :
    • Gestion simplifiée des formulaires.
    • Règles de validation déclarative.
    • Intégration facile avec d'autres bibliothèques.
  • Exemple :
import { useQuery } from 'react-query';

const fetchUsers = async () => {
  const response = await fetch('https://api.example.com/users');
  return response.json();
};

const UsersList = () => {
  const { isLoading, isError, data, error } = useQuery('users', fetchUsers);

  if (isLoading) return <div>Loading...</div>;
  if (isError) return <div>Error: {error.message}</div>;

  return (
    <ul>
      {data.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
};

TypeScript

  • Objectif : Surensemble de JavaScript typé statiquement.
  • Avantages :
    • Qualité et maintenabilité du code améliorées.
    • Détection précoce des erreurs.
    • Meilleure sécurité de saisie et achèvement du code.

Structure du projet

src/
├── composants/
│ ├── Bouton.jsx
│ ├── Entrée.jsx
│ └── ...
├──pages/
│ ├── Accueil.jsx
│ │ composants/
│ │ ├── Hero.jsx
│ │ └── ...
│ ├── À propos de.jsx
│ └── ...
├──lib/
│ ├── utils.js
│ └── ...
├──actions/
│ ├── api.js
│ └── ...
├── magasins/
│ ├── counterStore.js
│ └── ...

Conclusion

En suivant ces directives et en utilisant les outils recommandés, vous pouvez créer des applications React robustes, évolutives et maintenables. Cette approche favorise l'organisation du code, la réutilisabilité et la gestion efficace de l'état, ce qui se traduit par une meilleure expérience de développement et des logiciels de meilleure qualité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:RappelsArticle suivant:Rappels