Add the Provider
Now we'll enter React land!
First we need to create a PouchDB database and make it available to our app. To do this, we wrap our app with the
<Provider />
API provided by usePouchDB. But unlike with
React-Redux's <Provider />
we won't be doing it in index.js
, but in
the App.js
component.
// App.js
import React, { useState, useEffect } from 'react'
import './App.css'
import PouchDB from 'pouchdb-browser'
import { Provider } from 'use-pouchdb'
export default function App() {
const [db, setDB] = useState(() => new PouchDB('local'))
useEffect(() => {
const listener = dbName => {
if (dbName === 'local') {
setDB(new PouchDB('local'))
}
}
PouchDB.on('destroyed', listener)
return () => {
PouchDB.removeListener('destroyed', listener)
}
}, [])
return (
<Provider pouchdb={db}>
<div className="App">Add the future components here</div>
</Provider>
)
}
What is happening here?
A local database contains the data of an user. When a user logs out, we must delete their data. When we destroy a db, all it's data will be deleted, without syncing the deletion. The database will be completely removed from disk.
But we can't use a destroyed database in hooks! That's why we instantly re-create a new database with the same name. But it will not have any data from the old one.