- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 app.js 组件
import React, { lazy, Suspense } from 'react'
import './App.css'
// import io from 'socket.io-client'
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'
//lazy load the components
const Login = lazy(() => import('./Components/Login/Login'))
const Home = lazy(() => import('./Components/Home/Home'))
const List = lazy(() => import('./Components/List/List'))
const Page404 = lazy(() => import('./Components/404/'))
function App() {
return (
<Router>
<div className='App'>
<Suspense
fallback={
<div
style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
height: '100vh',
fontFamily: "'Ubuntu', sans-serif",
fontSize: '30px'
}}
>
Loading..
</div>
}
>
<Switch>
<Route exact path='/'>
<Home />
</Route>
<Route path='/create_user_name'>
<Login />
</Route>
<Route path='/list'>
<List />
</Route>
<Route component={Page404} />
</Switch>
</Suspense>
</div>
</Router>
)
}
export default App
当我尝试使用 history.push('/list')
时,我的页面 URL 正在更改,但页面内容没有更改。
示例:当我转到 /create_user_name
并单击按钮 history.push('/list')
时,就会执行。页面的 URL 从 /create_user_name 更改为 /list,但页面内容保持不变。它仍然包含为 /create_user_name 路由制作的相同 UI,而不是 /list UI。
history.js 组件
import { createBrowserHistory } from 'history'
const history = createBrowserHistory()
export default history
我正在使用 reducer 。存储组件
import io from 'socket.io-client'
import history from '../Components/history'
// import axios from 'axios'
//connect to the server
const socket = io.connect('localhost:3030')
console.log(socket)
//listen for number of users
export const users = socket.on('users', users => {
console.log(users)
return users
})
export const setUser = (state, action) => {
switch (action.type) {
case 'SET_NAME':
console.log(action.name)
const data = {
name: action.name
}
//sent user using socket
socket.emit('Create_name', data)
console.log(history)
history.push('/list') // I CALL THE HISTORY.PUSH HERE
return state
default:
console.log('Default State')
break
}
}
很抱歉,如果之前有人问过这个问题。
最佳答案
1.将历史记录传递给路由器:
import { Router } from 'react-router-dom'
import history from './history'
...
function App() {
return (
<Router history={history}>
...
</Router>
)
}
确保导入Router而不是BrowserRouter
As BrowserRouter uses its own history and does not accept any outer history property, we have to use Router instead of it.
2.现在,每当你想在 React 组件之外使用历史记录时,你首先导入它,然后使用它。
import history from './history'
...
history.push('/list');
这样路由器就能知道对历史记录所做的更改。
当你在 React 组件内部时,你可以直接使用 useHistory钩子(Hook)
关于javascript - 带有反应钩子(Hook)的 react 路由器 DOM 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60041085/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!