English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La principal diferencia entre el estado y las propiedadespropses inmutable. Por eso, el componente contenedor debe definir un estado que se pueda actualizar y modificar, mientras que los componentes secundarios deben usar propiedades para recibir datos desde el estado.
Cuando necesitamos usar datos inmutables en un componente, podemos agregar propiedades en la función reactDOM.render() de main.js y usarlas en el componente.
import React from 'react'; class App extends React.Component { render() { return ( <div> <h1>{this.props.headerProp}</h1> <h2>{this.props.contentProp}</h2> </div> ); } }
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App headerProp="Encabezado desde propiedades..." contentProp="Contenido desde propiedades..."/>,document.getElementById('app')); export default App;
Esto produce el siguiente resultado.
También puede configurar directamente valores de propiedades predeterminadas en el constructor del componente, en lugar de agregarlos al elemento reactDom.render ().
import React from 'react'; class App extends React.Component { render() { return ( <div> <h1>{this.props.headerProp}</h1> <h2>{this.props.contentProp}</h2> </div> ); } } App.defaultProps = { headerProp: "Encabezado desde propiedades...", contentProp: "Contenido desde propiedades..." } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App/>,document.getElementById('app'));
la salida es la misma que antes.
El siguiente ejemplo muestra cómoestadoEn la aplicación se realiza la combinación y el soporte. En el componente padre configuramos el estado y luego usamospropspara pasarlo al árbol de componentes. EnrenderDentro de la función, estamos configurandoheaderPropycontentPropEn el componente secundario se utiliza.
import React from 'react'; class App extends React.Component { constructor(props) { super(props); this.state = { header: "Encabezado desde propiedades...", content: "Contenido desde propiedades..." } } render() { return ( <div> <Header headerProp = {this.state.header}/> <Content contentProp = {this.state.content}/> </div> ); } } class Header extends React.Component { render() { return ( <div> <h1>{this.props.headerProp}</h1> </div> ); } } class Content extends React.Component { render() { return ( <div> <h2>{this.props.contentProp}</h2> </div> ); } } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App/>,document.getElementById('app'));
Los resultados serán los mismos que en los dos ejemplos anteriores, la única diferencia es nuestra fuente de datos, que originalmente proviene deestadoCuando queremos actualizarlo, solo necesitamos actualizar el estado, todos los componentes hijos se actualizarán.