import React, { Component } from 'react'; import logo from './logo.svg'; import './App.css'; class Cuadrado extends Component { render() { const estilo = { padding: 10, margin: 20, display: "inline-block", backgroundColor: this.props.bgColor, width: 100, height: 100 }; return ( <div style={estilo}> </div> ); } } class Color extends Component { constructor(props) { super(props); this.state = { color: this.props.color }; } cambio = (event) => { const {name, value} = event.target; this.setState({ [name]: value }) this.props.cambiaColor(value); } render() { return ( <div> <input type="text" name="color" value={this.state.color} onChange={this.cambio}/> </div> ); } } class Tarjeta extends Component { constructor(props) { super(props); this.state = { color: "red" }; } isColor = (strColor) => { const s = new Option().style; s.color = strColor; return s.color !== ''; } shouldComponentUpdate(nextProps, nextState) { return this.isColor(nextState.color); } cambiaColor = (color) => { this.setState({color: color}); } render() { return ( <div> <Cuadrado bgColor={this.state.color}/> <Color color={this.state.color} cambiaColor={this.cambiaColor}/> </div> ); } } ; class App extends Component { render() { return ( <Tarjeta/> ); } } export default App;