【发布时间】:2019-02-15 09:24:58
【问题描述】:
我已经查找了此特定案例的所有答案,但是所有答案都表明不是从 React.Component 扩展的,或者在其他情况下表明使用命名导出而不是默认导出并导入带有花括号的类而不是没有可能是问题所在。
错误:
失败的道具类型:提供给Route的object类型的无效道具component,应为function。
我已经更新了所有依赖项,检查了所有这些情况,但仍然无法弄清楚抛出错误的原因。
下面是我的代码:
App.jsx
import React from 'react';
import { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom';
// components
import NotFound from '../common/NotFound';
import Home from './home/Home';
import About from './about/About';
export default function App() {
return (
<BrowserRouter>
<Switch>
<Route
render={() => (
<Switch>
<Route exact path={'/'} component={Home} />
<Route exact path={'/about'} component={About} />
<Route render={() => <Redirect to={'/'} />} />
<Route component={NotFound} />
</Switch>
)}
/>
</Switch>
</BrowserRouter>
);
}
关于.jsx
import React from 'react';
// style
import classes from './About.scss';
export default function About() {
return <div className={classes.aboutContainer}>Hello</div>;
}
Home.jsx
import React, { useState, useEffect, useRef } from 'react';
// components
import NavigationFull from '../navigation/NavigationFull';
import NavigationToggle from '../navigation/NavigationToggle';
import About from '../about/About';
// styles
import classes from './Home.scss';
import fullNavClass from '../navigation/NavigationFull.scss';
export default function Home() {
const navigation = useRef(null);
const [topOffset, setTopOffset] = useState(window.innerHeight);
useEffect(() => {
window.addEventListener('scroll', handleStickyHeader);
return () => {
window.removeEventListener('scroll', handleStickyHeader);
};
}, []);
function handleStickyHeader() {
const { offsetTop, clientHeight, classList } = navigation.current;
setTopOffset(offsetTop);
// 15px added to substitute for the lack of margin.
const offset = window.pageYOffset + clientHeight + 15;
if (offset > topOffset) {
classList.add(fullNavClass.fixed);
} else {
classList.remove(fullNavClass.fixed);
}
}
return (
<>
<NavigationToggle />
<NavigationFull reference={navigation} color={'white'} />
<div className={classes.introContainer}>
<span className={classes.job}>SOFTWARE ENGINEER & UX DESIGNER</span>
<div className={classes.about}>
<span className={classes.welcome}>Hey, I'm</span>
<span className={classes.name}>Filip Grebowski</span>
</div>
</div>
<About />
</>
);
}
在<About />组件启动的地方抛出错误。
有什么想法吗?
【问题讨论】:
-
这与组件无关,这是不同的东西,请在此处查看您的代码codesandbox.io/s/98o5jr8xmr
-
这很有趣,谢谢。我会调查的。
-
请在codesandbox中添加remanining组件,我会研究一下
-
@DhavalPatel codesandbox.io/s/mmlvooq63y :-) 谢谢。
标签: javascript reactjs react-hooks