【发布时间】:2021-10-11 14:49:48
【问题描述】:
当我使用 react-router 访问一个功能组件时,它会渲染两次。 但是,当我刷新该组件的页面时,它只会呈现一次。
为了测试,创建了这样的空功能组件:
import React from 'react'
const TestFunctional: React.FC<any> = () => {
console.log('Test===>>>') // console log twice when navigate to this component
return <></>
}
export default TestFunctional
这是App.tsx中的路由器
import React from 'react'
import { Route, Switch, useLocation, withRouter } from 'react-router-dom'
import TestFunctional from 'views/Test'
const AnimatedSwitch = withRouter(({ location }) => (
<Switch>
<Route exact path="/" component={StartPage} />
<Route exact path="/test" component={TestFunctional} />
</Switch>
))
const App = () => {
return (
<div className="app">
<Web3ReactManager>
<AnimatedSwitch />
</Web3ReactManager>
</div>
)
}
export default App
我没有在index.tsx 中使用React.StrictMode。
ReactDOM.render(
<ApolloProvider client={client}>
<Provider store={store}>
<ConnectedRouter history={history}>
<Web3ReactProvider getLibrary={getLibrary}>
<Web3ProviderNetwork getLibrary={getLibrary}>
<App />
</Web3ProviderNetwork>
</Web3ReactProvider>
</ConnectedRouter>
</Provider>
</ApolloProvider>,
document.getElementById('root')
)
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers
serviceWorker.unregister()
所以这有点奇怪。
当我刷新此页面时,console.log('Test===>>>') 只显示一次。
什么是错误以及如何解决双重渲染问题?
【问题讨论】:
标签: reactjs typescript react-functional-component