Heim >Web-Frontend >js-Tutorial >React Query-Datenbank-Plug-in: Integrationspraxis mit Nachrichtenwarteschlange
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
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
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') );
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.
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> ); };
创建数据
要创建新的数据,可以使用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> ); };
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); }); });
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.
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:
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> ); };
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
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!