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@latestLembrando, 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 processpara registrar uma janela como uma rota da aplicação. - O componente Router será usado no
renderer processpara 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!