Cómo interactuar con el estado de sus componentes
Establecer el estado predeterminado
En el constructor de componentes, inicialicethis.state
. Por ejemplo, el componente BlogPostExcerpt podría tener unclicked
Expresar:
class BlogPostExcerpt extends Component {
constructor(props) {
super(props)
this.state = { clicked: false }
}
render() {
return (
<div>
<h1>Title</h1>
<p>Description</p>
</div>
)
}
}
Accediendo al estado
losclickeadose puede acceder al estado haciendo referenciathis.state.clicked
:
class BlogPostExcerpt extends Component {
constructor(props) {
super(props)
this.state = { clicked: false }
}
render() {
return (
<div>
<h1>Title</h1>
<p>Description</p>
<p>Clicked: {this.state.clicked}</p>
</div>
)
}
}
Mutando el estado
Un estado nunca debe ser mutado usando
this.state.clicked = true
En su lugar, siempre debes usarsetState()
en su lugar, pasándole un objeto:
this.setState({ clicked: true })
El objeto puede contener un subconjunto o un superconjunto del estado. Solo se mutarán las propiedades que pase, las omitidas se dejarán en su estado actual.
Por qué siempre deberías usarsetState()
La razón es que al usar este método, React sabe que el estado ha cambiado. A continuación, iniciará la serie de eventos que llevarán a que el Componente se vuelva a renderizar, junto con cualquierDOMactualizar.
Flujo de datos unidireccional
Un estado siempre es propiedad de un componente. Cualquier dato que se vea afectado por este estado solo puede afectar a los componentes debajo de él: sus hijos
Cambiar el estado de un componente nunca afectará a su padre, ni a sus hermanos, ni a ningún otro componente de la aplicación: solo a sus hijos.
Esta es la razón por la que el estado a menudo se mueve hacia arriba en el árbol de componentes.
Moviendo el estado hacia arriba en el árbol
Debido a la regla de flujo de datos unidireccional, si dos componentes necesitan compartir el estado, el estado debe moverse a un ancestro común.
Muchas veces, el antepasado más cercano es el mejor lugar para administrar el estado, pero no es una regla obligatoria.
El estado se transmite a los componentes que necesitan ese valor a través de accesorios:
class Converter extends React.Component {
constructor(props) {
super(props)
this.state = { currency: '€' }
}
render() {
return (
<div>
<Display currency={this.state.currency} />
<CurrencySwitcher currency={this.state.currency} />
</div>
)
}
}
El estado puede ser mutado por un componente hijo pasando una función mutante como un accesorio:
class Converter extends React.Component {
constructor(props) {
super(props)
this.state = { currency: '€' }
}
handleChangeCurrency = event => {
this.setState({ currency: this.state.currency === ‘€’ ? ‘$’ : ‘€’ })
}
render() {
return (
<div>
<Display currency={this.state.currency} />
<CurrencySwitcher
currency={this.state.currency}
handleChangeCurrency={this.handleChangeCurrency}
/>
</div>
)
}
}
const CurrencySwitcher = props => {
return (
<button onClick={props.handleChangeCurrency}>
Current currency is {props.currency}. Change it!
</button>
)
}
const Display = props => {
return <p>Current currency is {props.currency}.</p>
}
Descarga mi gratisReact Handbook
Más tutoriales de react:
- Un ejemplo de aplicación simple de React: obtenga información de los usuarios de GitHub a través de la API
- Construye un contador simple con React
- Configuración de VS Code para el desarrollo de React
- Cómo pasar accesorios a un componente secundario a través de React Router
- Crea una aplicación con Electron y React
- Tutorial: crea una hoja de cálculo usando React
- La hoja de ruta para aprender React
- Aprenda a usar Redux
- Empezando con JSX
- Componentes con estilo
- Introducción a Redux Saga
- Introducción a React Router
- Introducción a React
- Reaccionar componentes
- El DOM virtual
- Reaccionar eventos
- El estado de reacción
- Reaccionar apoyos
- El fragmento de reacción
- La API React Context
- Reaccionar PropTypes
- Reaccionar conceptos: declarativo
- Reaccionar: Cómo mostrar un componente diferente al hacer clic
- Cómo hacer un bucle dentro de React JSX
- Props vs State en React
- ¿Deberías usar jQuery o React?
- ¿Cuánto JavaScript necesitas saber para usar React?
- Introducción a Gatsby
- Cómo hacer referencia a un elemento DOM en React
- Flujo de datos unidireccional en React
- Reaccionar componentes de orden superior
- Reaccionar eventos del ciclo de vida
- Concepto de reacción: inmutabilidad
- Concepto de reacción: Pureza
- Introducción a React Hooks
- Introducción a create-react-app
- Concepto de reacción: Composición
- Reaccionar: componentes de presentación frente a contenedores
- División de código en React
- Representación del lado del servidor con React
- Cómo instalar React
- CSS en React
- Usando SASS en React
- Manejo de formularios en React
- Reaccionar StrictMode
- Reaccionar portales
- Reaccionar accesorios de renderizado
- Prueba de componentes de React
- Cómo pasar un parámetro a los controladores de eventos en React
- Cómo manejar errores en React
- Cómo devolver múltiples elementos en JSX
- Representación condicional en React
- React, cómo transferir accesorios a componentes secundarios
- Cómo obtener el valor de un elemento de entrada en React
- Cómo utilizar el gancho useState React
- Cómo usar el gancho useCallback React
- Cómo utilizar el gancho useEffect React
- Cómo utilizar el gancho useMemo React
- Cómo utilizar el gancho useRef React
- Cómo usar el gancho useContext React
- Cómo utilizar el gancho useReducer React
- Cómo conectar su aplicación React a un backend en el mismo origen
- El tutorial de Reach Router
- Cómo utilizar las herramientas de desarrollo de React
- Cómo aprender React
- Cómo depurar una aplicación React
- Cómo renderizar HTML en React
- Cómo arreglar el error `dangerouslySetInnerHTML` no coincidió en React
- Cómo solucioné un problema con el estado del formulario de inicio de sesión de React y el autocompletado del navegador
- Cómo configurar HTTPS en una aplicación React en localhost
- Cómo corregir el error "no se puede actualizar un componente mientras se renderiza un componente diferente" en React
- ¿Puedo usar React hooks dentro de un condicional?
- Usar useState con un objeto: cómo actualizar
- Cómo moverse por bloques de código con React y Tailwind
- Reaccionar, enfocar un elemento en Reaccionar cuando se agrega al DOM
- Reaccionar, editar texto con doble clic