0
我試圖讓我的第一個真正的反應和REDX應用程序的身份驗證和運行,但我堅持管理路線訪問和驗證。對象的屬性是未定義的對象:React.PropTypes.object
這裏是我的代碼來驗證授權:
export default function(ComposedComponent) {
class Authentication extends Component {
static contextTypes = {
router: React.PropTypes.object
}
componentWillMount() {
if (!this.props.authenticated) {
this.context.router.push('/');
}
}
componentWillUpdate(nextProps) {
if (!nextProps.authenticated) {
this.context.router.push('/');
}
}
render() {
return <ComposedComponent {...this.props} />
}
}
function mapStateToProps(state) {
return { authenticated: state.auth.authenticated };
}
return connect(mapStateToProps)(Authentication);
}
我進口,並要求它在我的路線上的位置:
class App extends Component {
render() {
return (
<Router history={history}>
<Layout>
<Route path='/' exact component={Home} />
<Route path='/signin' component={SignIn} />
<Route path='/signout' component={SignOut} />
<Route path='/brain' component={RequireAuth(Brain)} />
</Layout>
</Router>
);
}
}
export default App;
這是我收到的錯誤:
TypeError: Cannot read property 'object' of undefined
./src/components/auth/RequireAuth.js.__webpack_exports__.a
src/components/auth/RequireAuth.js:7
4 | export default function(ComposedComponent) {
5 | class Authentication extends Component {
6 | static contextTypes = {
> 7 | router: React.PropTypes.object
8 | }
9 |
10 | componentWillMount() {
View compiled
感謝您提供的任何方向!
您運行的是哪個版本的React? 'React.PropTypes'從v15.5開始已被棄用。它現在是它自己的'PropTypes'模塊(https://www.npmjs.com/package/prop-types)。你可能應該導入它,然後使用'PropTypes.object'。 – SamVK
這固定它,非常感謝你。是的,我使用最新版本的React,並使用了一個有點過時的教程,所以我認爲這是一個問題,但在搜索時找不到任何東西。再次感謝! –