Podemos encapsular diferentes códigos y propiedades dentro de componentes. Un ejemplo sencillo:
class Componente extends React.Component { render() { return <h2>Soy un componente to chulo</h2>; } } ReactDOM.render(<Componente />, document.getElementById('root'));
Los componentes pueden tener constructores:
class Componente extends React.Component { constructor() { super(); this.adjetivo ="to chulo"; } render() { return <h2>Soy un componente {this.adjetivo}</h2>; } }
Y propiedades que podemos pasar desde la renderización:
class Componente extends React.Component { constructor(props) { super(props); } render() { return <h2>Soy un componente {this.props.adjetivo}</h2>; } } ReactDOM.render(<Componente adjetivo="to guapo"/>, document.getElementById('root'));
Otro ejemplo accediendo a la propiedad children:
class Componente extends React.Component { constructor(props) { super(props); } render() { return <h2>Soy un componente {this.props.children} {this.props.children}</h2>; } } ReactDOM.render(<Componente>to guapo</Componente>, document.getElementById('root'));
Con estilos:
class Componente extends React.Component { constructor(props) { super(props); } render() { const componenteStyle={ color:this.props.color }; return <h2 style={componenteStyle}>Soy un componente {this.props.children} {this.props.children}</h2>; } } ReactDOM.render(<Componente color="yellow">to guapo</Componente>, document.getElementById('root'));
Propiedades por defecto:
class Componente extends React.Component { constructor(props) { super(props); } render() { const componenteStyle = { color: this.props.color }; return <h2 style={componenteStyle}>Soy un componente {this.props.children} {this.props.children}</h2>; } } Componente.defaultProps = { color: 'red' }; ReactDOM.render(<Componente >to guapo</Componente>, document.getElementById('root'));
Componentes anidados:
class Square extends React.Component { render() { var squareStyle = { height: 150, backgroundColor: this.props.color }; return ( <div style={squareStyle}> </div> ); } } class Label extends React.Component { render() { var labelStyle = { fontFamily: "sans-serif", fontWeight: "bold", padding: 13, margin: 0 }; return ( <p style={labelStyle}>{this.props.color}</p> ); } } class Card extends React.Component { render() { var cardStyle = { height: 200, width: 150, padding: 0, backgroundColor: "#FFF", boxShadow: "0px 0px 5px #666" }; return ( <div style={cardStyle}> <Square color={this.props.color}/> <Label color={this.props.color}/> </div> ); } } ReactDOM.render(<Card color="#FE0056"/>, document.getElementById('root'));