Reactjs 上下文API历史记录。侦听无法读取属性';听一听';未定义的
我正在使用带有浏览器历史推送和弹出状态的上下文API。当前出现此错误Reactjs 上下文API历史记录。侦听无法读取属性';听一听';未定义的,reactjs,browser-history,context-api,Reactjs,Browser History,Context Api,我正在使用带有浏览器历史推送和弹出状态的上下文API。当前出现此错误无法读取未定义的属性“listen”。如果我将我的浏览器历史记录功能移动到另一个组件,那么它可以完美地工作,没有错误。我没有在下面的代码中包含我所有的州。任何帮助都会很棒的谢谢大家 import React, { useState, createContext, useEffect } from 'react' import { useHistory } from 'react-router-dom' const histor
无法读取未定义的属性“listen”
。如果我将我的浏览器历史记录功能移动到另一个组件,那么它可以完美地工作,没有错误。我没有在下面的代码中包含我所有的州。任何帮助都会很棒的谢谢大家
import React, { useState, createContext, useEffect } from 'react'
import { useHistory } from 'react-router-dom'
const history = useHistory()
const [keys, setKeys] = useState([])
useEffect(() => {
return history.listen(location => {
if (history.action === 'PUSH') {
setKeys([location.key])
}
if (history.action === 'POP') {
if (keys[1] === location.key) {
setKeys(([ _, ...keys ]) => keys)
setPage(page + 1)
setCount(count + 1)
setPercentage(percentage + 20)
} else {
setKeys((keys) => [ location.key, ...keys ])
setPage(page - 1)
setCount(count - 1)
setPercentage(percentage - 20)
}
}
})
}, [keys, count, percentage])
您是否正在渲染组件树上比该组件更远的
?你说它在另一个组件中工作,所以我怀疑你的浏览器路由器是这个组件的后代,而它需要是一个祖先。不,我的上下文API是我的管理状态,并包装了我的所有路由。它在另一个拥有自己RESTAPI的组件中工作。只需添加上面的功能,我就可以浏览历史,没有错误。我是否需要以某种方式初始化它?