전자 라우터 DOM이 여기 있습니다!
12495 단어 electrontypescriptreactjavascript
특징
설치
터미널에서 다음을 실행합니다.
yarn add electron-router-dom
# OR
npm i electron-router-dom
라우터 DOM은 아직 설치하지 않았거나 패키지 관리자가 자동으로 처리하지 않는 경우 피어 종속성이므로 다음을 실행하십시오.
yarn add react-router-dom
# OR
npm i react-router-dom
용법
명심해야 할 주요 사항은
createFileRoute
및 createURLRoute
함수에서 사용되는 Electron Main Process와 <Router>
구성 요소 소품 이름의 Electron Renderer Process에서 동일한 창 ID를 사용해야 한다는 것입니다.전자 주요 공정
import {
app,
BrowserWindow,
BrowserWindowConstructorOptions as WindowOptions,
} from 'electron'
import { createFileRoute, createURLRoute } from 'electron-router-dom'
import { join } from 'path'
function createWindow(id: string, options: WindowOptions = {}) {
const window = new BrowserWindow({
width: 700,
height: 473,
...options,
})
const devServerURL = createURLRoute(process.env['ELECTRON_RENDERER_URL']!, id)
const fileRoute = createFileRoute(
join(__dirname, '../renderer/index.html'),
id
)
process.env.NODE_ENV === 'development'
? window.loadURL(devServerURL)
: window.loadFile(...fileRoute)
return window
}
app.whenReady().then(() => {
createWindow('main', {
webPreferences: {
preload: join(__dirname, '../preload/index.js'),
},
})
createWindow('about', {
width: 450,
height: 350,
show: false,
})
})
전자 렌더러 프로세스
routes.tsx
파일을 생성합니다.import { Router, Route } from 'electron-router-dom'
import { MainScreen, AboutScreen, SearchScreen } from './screens'
export function AppRoutes() {
return (
<Router
main={
<>
<Route path="/" element={<MainScreen />} />
<Route path="/search" element={<SearchScreen />} />
</>
}
about={<Route path="/" element={<AboutScreen />} />}
/>
)
}
그런 다음
AppRoutes
에서 index.tsx
를 가져옵니다.import ReactDom from 'react-dom/client'
import React from 'react'
import { AppRoutes } from './routes'
ReactDom
.createRoot(document.querySelector('app') as HTMLElement)
.render(
<React.StrictMode>
<AppRoutes />
</React.StrictMode>
)
MainScreen 구성 요소의 간단한 예:
import { useNavigate } from 'react-router-dom'
// The "App" comes from the context bridge in preload/index.ts
const { App } = window
export function MainScreen() {
const navigate = useNavigate()
return (
<main>
<button onClick={() => navigate('/search')}>Go to Search screen</button>
<button onClick={App.OpenAboutWindow}>Open About window</button>
</main>
)
}
이 라이브러리에 대한 자세한 정보를 얻으려면,
확인 Electron Router DOM GitHub Repository
감사합니다 💜
Reference
이 문제에 관하여(전자 라우터 DOM이 여기 있습니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/daltonmenezes/electron-router-dom-is-here-12hd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)