2017-10-20 18 views
0

Ceci est un exemple de ce que j'essaie de faire. Je veux passer dans les accessoires de la classe MyComponent, sans utiliser <MyComponent hello={'Hello World'}/>, parce que je passe MyComponent à d'autres bibliothèques.reactjs, comment passer les accessoires au niveau de la classe

import React, { Component } from 'react'; 

class MyComponent extends Component { 
    render() { 
    const { hello } = this.props; 
    return (
     <div>{hello}</div> 
    ); 
    } 
} 

// this line is wrong 
MyComponent.props = { 
    hello: 'Hello World!' 
} 

<MyComponent /> 

Comment est-réagir Redux se connecter à ajouter this.props.state et la carte toute autre fonction aux accessoires du composant? Je veux injecter mes objets personnalisés dans un composant.

+0

Pensez à ce que vous demandez. Vous voulez passer dans les accessoires, sans passer dans les accessoires. Non: ce n'est pas comme ça que vous utilisez la méthodologie de React. Dans votre exemple, dites simplement «laissez les accessoires = {...}» et ensuite utilisez «' parce que c'est bien: il n'y a aucune raison de ne pas vouloir faire cela qui ait du sens d'un point de vue de la programmation. –

Répondre

1

Vous devez créer un Higher Order Component

function withMyObject(WrappedComponent,helloText) { 
    return class extends React.Component { 

    render() { 
     return <WrappedComponent {...this.props} hello={helloText} />; 
    } 
    }; 
} 

Utilisation:

UpdatedComponent = withMyObject(ComponentToBeWrapped,"Hello"); 
2

Vous pouvez définir des accessoires par défaut. Je pense que c'est une bonne pratique.

import React, { Component } from 'react'; 

class MyComponent extends Component { 
    render() { 
    const { hello } = this.props; 
    return (
     <div>{hello}</div> 
    ); 
    }headerProp: "Header from props...", 
    contentProp:"Content from props..." 
} 

MyComponent.defaultProps = { 
    hello: 'Hello World!' 
} 

<MyComponent />