属性 'history' 在类型 'IntrinsicAttributes 上不存在
Property 'history' does not exist on type 'IntrinsicAttributes
我正在通过传递 createBrowserHistory 道具在路由器中包装 React 应用程序。但是获取“属性 'history' 在类型 'IntrinsicAttributes & RouterPops' 上不存在
这是我的 index.tsx
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import { Router } from "react-router-dom";
import history from "../src/utils/history";
ReactDOM.render(
<Router history={history}>
<App />
</Router>,
document.getElementById("root")
);
这是我的 history.tsx
import { createBrowserHistory } from "history";
const history = createBrowserHistory();
export default history;
我正在使用 react-router-dom v6.0.2
我怀疑您可以实现更高级别路由器之一的更多逻辑,并使用自定义历史记录对象获得您想要的行为。
BrowserRouter 实施例如:
export function BrowserRouter({
basename,
children,
window
}: BrowserRouterProps) {
let historyRef = React.useRef<BrowserHistory>();
if (historyRef.current == null) {
historyRef.current = createBrowserHistory({ window });
}
let history = historyRef.current;
let [state, setState] = React.useState({
action: history.action,
location: history.location
});
React.useLayoutEffect(() => history.listen(setState), [history]);
return (
<Router
basename={basename}
children={children}
location={state.location}
navigationType={state.action}
navigator={history}
/>
);
}
创建一个使用自定义 history
对象并管理状态的 CustomRouter
:
const CustomRouter = ({ history, ...props }) => {
const [state, setState] = useState({
action: history.action,
location: history.location
});
useLayoutEffect(() => history.listen(setState), [history]);
return (
<Router
{...props}
location={state.location}
navigationType={state.action}
navigator={history}
/>
);
};
我正在通过传递 createBrowserHistory 道具在路由器中包装 React 应用程序。但是获取“属性 'history' 在类型 'IntrinsicAttributes & RouterPops' 上不存在
这是我的 index.tsx
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import { Router } from "react-router-dom";
import history from "../src/utils/history";
ReactDOM.render(
<Router history={history}>
<App />
</Router>,
document.getElementById("root")
);
这是我的 history.tsx
import { createBrowserHistory } from "history";
const history = createBrowserHistory();
export default history;
我正在使用 react-router-dom v6.0.2
我怀疑您可以实现更高级别路由器之一的更多逻辑,并使用自定义历史记录对象获得您想要的行为。
BrowserRouter 实施例如:
export function BrowserRouter({ basename, children, window }: BrowserRouterProps) { let historyRef = React.useRef<BrowserHistory>(); if (historyRef.current == null) { historyRef.current = createBrowserHistory({ window }); } let history = historyRef.current; let [state, setState] = React.useState({ action: history.action, location: history.location }); React.useLayoutEffect(() => history.listen(setState), [history]); return ( <Router basename={basename} children={children} location={state.location} navigationType={state.action} navigator={history} /> ); }
创建一个使用自定义 history
对象并管理状态的 CustomRouter
:
const CustomRouter = ({ history, ...props }) => {
const [state, setState] = useState({
action: history.action,
location: history.location
});
useLayoutEffect(() => history.listen(setState), [history]);
return (
<Router
{...props}
location={state.location}
navigationType={state.action}
navigator={history}
/>
);
};