Levantando estado en ReactJS

Requisito previo : ReactJs , Estado , Props

Levantando el Estado: Como sabemos, cada componente en React tiene su propio estado. Debido a esto, a veces los datos pueden ser redundantes e inconsistentes. Entonces, al elevar el estado, hacemos que el estado del componente principal sea una fuente única de verdad y pasamos los datos del padre a sus hijos.

Es hora de usar Levantar el estado: si los datos en «componentes principales y secundarios» o en «componentes primos» no están sincronizados.

Ejemplo 1: Si tenemos 2 componentes en nuestra App. A -> B donde, A es padre de B. Mantener los mismos datos en el Componente A y B puede causar inconsistencias en los datos. 

Ejemplo 2: Si tenemos 3 componentes en nuestra App.

        A
       / \
      B   C

Donde A es el padre de B y C. En este caso, si hay algunos datos solo en el componente B, pero el componente C también quiere esos datos. Sabemos que el componente C no puede acceder a los datos porque un componente solo puede hablar con su padre o hijo (no primos).

Problema: implementemos esto con un ejemplo simple pero general. Estamos considerando el segundo ejemplo.

Estructura completa del archivo:

Enfoque: para resolver esto, elevaremos el estado del componente B y el componente C al componente A. Haga que A.js sea nuestro padre principal cambiando la ruta de la aplicación en el archivo index.js

Antes:

import App from './App';

Después:

import App from './A';

Nombre de archivo- A.js:

Javascript

import React,{ Component }  from 'react';
import B from './B'
import C from './C'
   
class A extends Component {
  
  constructor(props) {
    super(props);
    this.handleTextChange = this.handleTextChange.bind(this);
    this.state = {text: ''};
  }
  
  handleTextChange(newText) {
    this.setState({text: newText});
  }
   
  render() {
    return (
        <React.Fragment>
          <B text={this.state.text} 
             handleTextChange={this.handleTextChange}/>
          <C text={this.state.text} />
        </React.Fragment>
    );
  }
}
  
export default A;

Nombre de archivo- B.js:

Javascript

import React,{ Component } from 'react';
  
class B extends Component {
  
constructor(props) {
    super(props);
    this.handleTextChange = this.handleTextChange.bind(this);
}
  
handleTextChange(e){
    this.props.handleTextChange(e.target.value);
}
  
render() {
    return (
        <input value={this.props.text} 
               onChange={this.handleTextChange} />
    );
}
}
      
export default B;

Nombre de archivo- C.js:

Javascript

import React,{ Component } from 'react';
  
class C extends Component {
  
render() {
    return (
        <h3>Output: {this.props.text}</h3>
    );
}
}
      
export default C;

Salida: ahora, el componente C puede acceder al texto en el componente B a través del componente A.

Publicación traducida automáticamente

Artículo escrito por pratikraut0000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *