Migrando da v1 para a v2
Aprenda como migrar do Electron Router DOM v1 para a v2
Atualizando as dependências
npm i react-router-dom@latest electron-router-dom@latest
Lembrando, que, as versões mínimas necessárias para o Electron Router DOM v2
são:
- electron:
>=17.0
- react:
>=18.0
- react-router-dom:
>=6.22.3
Criando o arquivo electron-router-dom.ts
Na pasta src
do seu projeto, crie uma pasta lib
e dentro dela o arquivo electron-router-dom.ts
.
É, através desse novo arquivo que você irá expor o método registerRoute
e o componente Router
para a sua aplicação.
- O método registerRoute será usada no
main process
para registrar uma janela como uma rota da aplicação. - O componente Router será usado no
renderer process
para navegar entre as janelas/rotas da aplicação.
import { createElectronRouter } from 'electron-router-dom'
export const { Router, registerRoute } = createElectronRouter({
port: 4927, // a porta em que o seu servidor React está rodando (opcional, porta padrão é 3000)
types: {
/**
* Os ids das janelas da sua aplicação, pense nesses ids como os basenames das rotas
* essa nova forma permitirá que o intelisense do seu editor te ajude a saber quais ids estão disponíveis
* tanto no main quanto no renderer process
*/
ids: ['main'],
},
})
Atualizando o processo principal
- import { createFileRoute, createURLRoute } from 'electron-router-dom'
+ import { registerRoute } from '../lib/electron-router-dom'
Com a remoção das funções createFileRoute
e createURLRoute
do pacote electron-router-dom
, o processo ficou mais simples e intuitivo.
Agora, você só precisa importar a função registerRoute
do arquivo electron-router-dom.ts
que você criou anteriormente.
O que antes era feito dessa forma:
const devServerURL = createURLRoute('http://localhost:3000', id)
const fileRoute = createFileRoute(
join(__dirname, '../renderer/index.html'),
id
)
process.env.NODE_ENV === 'development'
? window.loadURL(devServerURL)
: window.loadFile(...fileRoute)
Agora, será feito dessa:
registerRoute({
id: 'main',
browserWindow: window,
htmlFile: path.join(__dirname, '../renderer/index.html'),
})
Você não precisa mais se preocupar com a lógica de carregar a URL do servidor de desenvolvimento ou o arquivo HTML da aplicação, o Electron Router DOM
cuidará disso para você.
Atualizando as importações no processo de renderização
Agora o componente Route
não é mais exportado do pacote electron-router-dom
, mas sim do pacote react-router-dom
.
Além de simplificar o uso do Electron Router DOM
, essa decisão ajudará a causar menos confusão sobre o que deverá ser importado de cada pacote.
+ import { Route } from 'react-router-dom'
- import { Router, Route } from 'electron-router-dom'
+ import { Router } from '../lib/electron-router-dom'
🎉 Agora você está pronto para usar o Electron Router DOM v2
Para extrair o potencial máximo da biblioteca, recomendamos que você leia o restante da documentação ou veja os exemplos existentes!