반응형
createMemoryHistory는 여전히 브라우저 역사에는 DOM이 필요하다고 보고한다.
나는 모든 목적을 위해 내가 되어서는 안 된다고 믿는 오류를 받고 있다 :)
흐름은.
고객 history.js
>client/index.js
>history = createBrowserHistory
><App history={history} />
서버 history.js
>server/index.js
>history = createMemoryHistory
><App history={history} />
나는 메모리가 서버에서 사용되고 있다는 것을 확인할 수 있다. 메모리는 서버상에서 사용되며, 메모리는 서버상에서 다운되어 우리는 결코 서버에 도착하지 않는다.BroswerHistory
server.js 오류
Invariant Violation: Browser history needs a DOM
30 |
31 | // Render the component to a string
> 32 | const markup = renderToString(
33 | <Provider store={store}>
34 | <App history={history} />
35 | </Provider>
history.js
import createBrowserHistory from 'history/createBrowserHistory'
import createMemoryHistory from 'history/createMemoryHistory'
let history
let createHistory
if (typeof document !== 'undefined') {
createHistory = createBrowserHistory
} else {
createHistory = createMemoryHistory
}
history = createHistory()
export default history
나는 확인하고 확실히 했다.<BrowserRouter />
잘못된 곳도 아니다.
routes.js.
const routes = (
<Fragment>
<BrowserRouter>
<Switch>
<Route component={NoMatch} />
</Switch>
</BrowserRouter>
</Fragment>
)
export default routes
server.js
import history from '../common/history'
const store = configureStore(preloadedState, history)
// Render the component to a string
const markup = renderToString(
<Provider store={store}>
<App history={history} />
</Provider>
)
앱.js
import React from 'react'
import PropTypes from 'prop-types'
import { ConnectedRouter } from 'connected-react-router'
import routes from '../routes'
const App = ({ history }) => {
return <ConnectedRouter history={history}>{routes}</ConnectedRouter>
}
App.propTypes = {
history: PropTypes.object
}
export default App
그BrowserRouter
구성 요소: 생성history
자체 객체, 그리고 그것은 항상 HTML5 history API이며, 비 DOM 환경(예: 서버)에서는 작동하지 않을 것이다.
응용프로그램을 구성하여 다음 항목을 포함하지 않음BrowserRouter
서버에, 또는 구성요소로 교체하고 자신의 구성요소를 전달할 수 있다.history
DOM이 아닌 환경에서 메모리 기록을 사용할 개체.
const routes = (
<Fragment>
<Router history={history}>
<Switch>
<Route component={NoMatch} />
</Switch>
</Router>
</Fragment>
)
반응형
'Programing' 카테고리의 다른 글
왜 우리는 sys를 사용하지 말아야 하는가.py 스크립트에서 setdefaultencoding("utf-8")을 설정하시겠습니까? (0) | 2022.03.25 |
---|---|
라우터를 사용할 때 Vue 라우터 보기가 렌더링되지 않음각 항목 (0) | 2022.03.25 |
왜 람다에서는 인쇄가 안 되는가? (0) | 2022.03.25 |
외부 JS 스크립트를 VueJS 구성 요소에 추가하는 방법 (0) | 2022.03.25 |
Vue 라우터 - 경로 간에 쿼리 매개 변수를 전달하는 방법 (0) | 2022.03.25 |