2017-11-07 4 views
0
import React,{Component,} from 'react'; 
import {Route,Redirect} from 'react-router-dom'; 

export default class PrivateRoute extends React.Component{ 
    constructor(){ 
     super() 
    } 
    render(){ 
     const {component, authed, ...rest}=this.props; 
     return(
      <Route 
      {...rest} 
      render={(props) => authed === true 
       ? <Component {...this.props} /> 
       : <Redirect to={{pathname: '/login', state: {from: props.location}}} />} /> 
     ) 
    } 
} 

エラーをレンダリング与えルータ4カスタムコンポーネントを反応します。は、関数error

あなたはそれを拡張するクラスを作成する必要があり、あなたのrenderメソッドで出力として Componentを使用することはできません
+0

コンストラクタにもいくつかのものがありますか? –

+0

''は有効な 'component'ではありません。新しいコンポーネントクラスをレンダリングメソッドで置き換え、そこに置きます。 – Purgatory

答えて

0

TestComponent

import React from 'react'; 
import {Route, Redirect} from 'react-router-dom'; 

export default class TestComponent extends React.Component{ 
    render(){ 
     return <span>Hello</span> 
    } 
} 

を作成PrivateRoute

ことに注意してください。ここでは不要なのでconstructorを削除しました:

import React from 'react'; 
import {Route, Redirect} from 'react-router-dom'; 
import TestComponent from './TestComponent'; 

export default class PrivateRoute extends React.Component{ 
    render(){ 
     const {component, authed, ...rest}=this.props; 
     return(
      <Route 
      {...rest} 
      render={(props) => authed === true 
       ? <TestComponent {...this.props} /> 
       : <Redirect to={{pathname: '/login', state: {from: props.location}}} />} /> 
     ) 
    } 
} 
+0

ありがとうございました! –

+0

@VivekMalikダニをクリックして、この回答をupvoteして、他の人に解決されたことを知らせてください。 – Purgatory

関連する問題