2017-04-04 1 views
0

comment puis-je modifier ce code à une classe:Convertir const réagir classe

const PrivateRoute = ({ component, ...rest }) => (
    <Route {...rest} render={props => (
    fakeAuth.isAuthenticated ? (
     React.createElement(component, props) 
    ) : (
     <Redirect to={{ 
     pathname: '/login', 
     state: { from: props.location } 
     }}/> 
    ) 
)}/> 
) 

J'utilise ce composant réagir routeur 4:

<Switch> 
       <Route exact path="/" component={About} /> 
       <Route exact path="/login" component={Login} /> 
       <PrivateRoute path="/protected" component={Home}/> 
       <Route component={NotMatch} /> 
</Switch> 

Mais je dois passer à un Classe parce que j'utilise MobX.

Quelque chose comme ceci:

@inject('store') 
@observer 
export default class PrivateRoute extends Component { 
    constructor (props) { 
    super(props) 
    this.store = this.props.store 

    } 

    render() { 
    return (
      <div> 

      </div> 
    ) 
    } 
} 

Merci!

Répondre

2

Votre code de classe est OK pour la manipulation des accessoires comme votre composant fonctionnel:

@inject('store') 
@observer 
export default class PrivateRoute extends Component { 
    constructor (props) { 
    super(props); 
    this.store = this.props.store; 
    } 

    render() { 
    const { component, ...rest } = this.props; 
    return (
     <Route {...rest} render={ props => (
      fakeAuth.isAuthenticated ? (
       React.createElement(component, props) 
      ) : (
       <Redirect to={{ 
        pathname: '/login', 
        state: { from: props.location } 
       }}/> 
      ) 
     )}/> 
    ) 
    } 
} 
+0

Tout fonctionne bien, mais vous devez ajouter à const: {composant, ... rest} = this.props; – chemitaxis

+0

Qu'est-ce que ... reste? :) Merci! – chemitaxis

+1

Ouais oublié le const, merci! '... rest' met simplement le reste des propriétés de l'objet' this.props' dans un objet repos. jetez un oeil à [ce lien] (https://babeljs.io/docs/plugins/transform-object-rest-spread/) – HosseinAgha