Mise en ligne : mercredi 16 octobre 2024
Dans l'état actuel de notre application, nous devons, pour mettre à jour notre UI :
Grâce aux Connecting components, nous pourrons directement observer les changements dans notre base de données, et mettre à jour notre UI, en conséquence. Plus besoin de usState, de useEffect, ni de fetch, tout sera gérer, out of the box, par watermelonDB.
Nous importons withObservables
:
src/components/ListPost.tsximport { withObservables } from '@nozbe/watermelondb/react';
Nous créons un composant d'ordre supérieur (HOC), prenant en paramètre <ListPost /> et renvoyant un composant observable.
src/components/ListPost.tsxconst enhance = withObservables([], () => ({
posts: getPosts(),
}));
Nous modifions ensuite la fonction getPosts, pour qu'elle ne soit plus asynchrone, mais nous permette d'observer les Posts.
src/database/functions.tsexport const getPosts = () => {
const posts = database.get<Post>('posts').query().observe();
return posts;
};
Enfin, nous pouvons supprimer le useState et le useEffect, car ils ne nous sont plus utiles, ainsi que la props posts
dans ListPost :
src/app/index.tsx// Reste de la page ...
<ListPost />
Nous n'avons fait qu'effleurer tout la puissance du pattern observable dans watermelonDB. Dans les prochains articles, nous poussons plus loin notre connaissance, tout en continuant de faire évoluer notre ToDo List, via des TP 😉.