Heim > Web-Frontend > js-Tutorial > React Query-Datenbank-Plug-in: Integrationspraxis mit Nachrichtenwarteschlange

React Query-Datenbank-Plug-in: Integrationspraxis mit Nachrichtenwarteschlange

王林
Freigeben: 2023-09-29 11:05:11
Original
1535 Leute haben es durchsucht

React Query 数据库插件:与消息队列的整合实践

React Query Database Plug-in: Integrationspraxis mit Message Queue

Einführung:
In der modernen Webentwicklung ist die Interaktion zwischen dem Frontend und der Datenbank eine sehr häufige Anforderung. Als leistungsstarke Zustandsverwaltungsbibliothek bietet React Query nicht nur einen praktischen Mechanismus zur Datenabfrage und -aktualisierung, sondern auch ein Plug-in-System, mit dem verschiedene Back-End-Technologien und Datenspeicherlösungen problemlos integriert werden können. In diesem Artikel wird erläutert, wie Sie das React Query-Datenbank-Plug-In verwenden und es mit der Nachrichtenwarteschlange kombinieren, um eine effizientere Dateninteraktion zu erzielen.

1. Einführung in das React Query-Datenbank-Plug-in
Das React Query-Datenbank-Plug-in ist eine Open-Source-Codebibliothek, die die Funktionen von React Query erweitert und eine bequemere Möglichkeit zum Hinzufügen, Löschen, Ändern und Abfragen von Daten bietet . Das Plug-in unterstützt eine Vielzahl von Datenbanken wie MySQL, PostgreSQL, MongoDB usw. und kann auch an andere Datenbanken angepasst werden.

2. Installation und Konfiguration des React Query-Datenbank-Plug-ins

  1. Installation
    Zuerst müssen wir React Query und das Datenbank-Plug-in im Projekt installieren. Die Installation kann über npm oder Yarn abgeschlossen werden. Im Folgenden wird npm als Beispiel verwendet:

    npm install react-query
    npm install react-query-db-plugin
    Nach dem Login kopieren
  2. Configuration
    Führen Sie in der React Query-Konfigurationsdatei das Datenbank-Plug-in ein und registrieren Sie es:

    import { QueryClient, QueryClientProvider } from 'react-query';
    import { createDBPlugin } from 'react-query-db-plugin';
    
    //创建QueryClient
    const queryClient = new QueryClient();
    
    //创建并注册数据库插件
    const dbPlugin = createDBPlugin({
      //数据库配置信息
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'password',
      database: 'my-database',
    });
    queryClient.registerPlugin(dbPlugin);
    
    //将QueryClientProvider包裹在根组件外部
    ReactDOM.render(
      <QueryClientProvider client={queryClient}>
     <App />
      </QueryClientProvider>,
      document.getElementById('root')
    );
    Nach dem Login kopieren

3. Verwenden Sie das React Query-Datenbank-Plug-in zum Implementieren von Dateninteraktionen
Nehmen wir die MySQL-Datenbank als Beispiel, um vorzustellen, wie das React Query-Datenbank-Plug-in zum Implementieren von Vorgängen zum Hinzufügen, Löschen, Ändern und Abfragen von Daten verwendet wird.

  1. Daten abfragen
    In der React-Komponente können Sie die Methode useQuery verwenden, um Daten abzufragen. Beispielsweise möchten wir eine Liste der Benutzer aus der Datenbank abrufen: useQuery方法来进行数据的查询操作。例如,我们希望从数据库中获取用户列表:

    import { useQuery } from 'react-query';
    import { db } from 'react-query-db-plugin';
    
    const UserList = () => {
      const { data, isLoading } = useQuery('userList', () => {
     return db.query('SELECT * FROM users');
      });
    
      if (isLoading) {
     return <div>Loading...</div>;
      }
    
      return (
     <ul>
       {data.map(user => (
         <li key={user.id}>{user.name}</li>
       ))}
     </ul>
      );
    };
    Nach dem Login kopieren
  2. 创建数据
    要创建新的数据,可以使用useMutation

    import { useMutation } from 'react-query';
    import { db } from 'react-query-db-plugin';
    
    const AddUserForm = () => {
      const mutation = useMutation(values => {
     return db.query('INSERT INTO users SET ?', values);
      });
    
      const handleSubmit = e => {
     e.preventDefault();
     mutation.mutate({
       name: e.target.elements.name.value,
       age: e.target.elements.age.value,
     });
      };
    
      return (
     <form onSubmit={handleSubmit}>
       <input name="name" type="text" placeholder="Name" />
       <input name="age" type="number" placeholder="Age" />
       <button type="submit" disabled={mutation.isLoading}>
         {mutation.isLoading ? 'Loading...' : 'Add'}
       </button>
     </form>
      );
    };
    Nach dem Login kopieren

  3. Daten erstellen
  4. Um neue Daten zu erstellen, können Sie die Methode useMutation verwenden. Zum Beispiel erstellen wir ein Formular zum Hinzufügen eines neuen Benutzers:
const mutation = useMutation(values => {
  return db.query('INSERT INTO users SET ?', values)
 .then(() => {
   //发布事件
   queue.publish('userAdded', values);
 });
});
Nach dem Login kopieren


Die Vorgänge zum Aktualisieren und Löschen von Daten ähneln dem Erstellen von Daten und müssen lediglich unterschiedliche SQL-Anweisungen verwenden, um dies zu erreichen.

  1. 4. Integrationspraxis mit Nachrichtenwarteschlange

    In der tatsächlichen Entwicklung wird die Nachrichtenwarteschlange häufig für die asynchrone Datenverarbeitung verwendet. Die Integrationspraxis des React Query-Datenbank-Plug-Ins und der Nachrichtenwarteschlange kann auf folgende Weise erreicht werden:

  2. Datenänderungsereignisse veröffentlichen

    Nachdem die Vorgänge zum Hinzufügen, Löschen, Ändern und Abfragen von Daten abgeschlossen sind, kann das Datenänderungsereignis erfolgen über die Nachrichtenwarteschlange gesendet. Im obigen Beispiel zum Erstellen von Daten können Sie beispielsweise ein Ereignis veröffentlichen, nachdem die Daten eingefügt wurden:

    import { useQuery, useQueryClient } from 'react-query';
    import { db } from 'react-query-db-plugin';
    import { queue } from 'react-query-message-queue';
    
    const UserList = () => {
      const queryClient = useQueryClient();
    
      const { data, isLoading } = useQuery('userList', () => {
     return db.query('SELECT * FROM users');
      });
    
      //订阅事件
      useEffect(() => {
     const subscription = queue.subscribe('userAdded', payload => {
       queryClient.setQueryData('userList', oldData => {
         //在现有的用户列表数据之后添加新用户
         return [...oldData, payload];
       });
     });
    
     return () => {
       subscription.unsubscribe();
     };
      }, []);
    
      if (isLoading) {
     return <div>Loading...</div>;
      }
    
      return (
     <ul>
       {data.map(user => (
         <li key={user.id}>{user.name}</li>
       ))}
     </ul>
      );
    };
    Nach dem Login kopieren
Datenänderungsereignisse abonnieren

Wo Sie die Schnittstelle oder andere asynchrone Vorgänge aktualisieren müssen, können Sie das abonnieren entsprechendes Datenänderungsereignis und führen Sie Handle entsprechend aus. Beispielsweise möchten wir die Schnittstelle aktualisieren, wenn sich die Benutzerliste ändert:
rrreee

🎜🎜 5. Zusammenfassung🎜Durch die Verwendung des React Query-Datenbank-Plug-Ins können wir problemlos Datenbankoperationen durchführen und diese mit Nachrichtenwarteschlangen kombinieren, um effizientere Daten zu erhalten Interaktion. In diesem Artikel erfahren Sie, wie Sie das React Query-Datenbank-Plug-in installieren und konfigurieren und wie Sie das Plug-in zum Abfragen, Erstellen, Aktualisieren und Löschen von Daten verwenden. Darüber hinaus haben wir vorgestellt, wie man React Query in Nachrichtenwarteschlangen integriert, um eine asynchrone Datenverarbeitung zu erreichen. Ich hoffe, dieser Artikel kann Ihnen helfen, das React Query-Datenbank-Plug-in besser zu verstehen und anzuwenden. 🎜

Das obige ist der detaillierte Inhalt vonReact Query-Datenbank-Plug-in: Integrationspraxis mit Nachrichtenwarteschlange. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage