---
title: State
localeTitle: состояние
---
# состояние
Состояние - это место, откуда поступают данные.
Мы всегда должны стараться максимально упростить наше состояние и свести к минимуму количество компонентов состояния. Если у нас есть, например, десять компонентов, которым нужны данные из состояния, мы должны создать один компонент контейнера, который будет сохранять состояние для всех из них.
Состояние в основном похоже на глобальный объект, доступный везде в компоненте.
Пример компонента Stateful Class:
```javascript
import React from 'react'; 
 
 class App extends React.Component { 
  constructor(props) { 
    super(props); 
 
    // We declare the state as shown below 
 
    this.state = { 
      x: "This is x from state", 
      y: "This is y from state" 
    } 
  } 
  render() { 
    return ( 
      
 
        
{this.state.x}
 
        {this.state.y}
 
       
    ); 
  } 
 } 
 export default App; 
```
Другой пример:
```javascript
import React from 'react'; 
 
 class App extends React.Component { 
  constructor(props) { 
    super(props); 
 
    // We declare the state as shown below 
    this.state = { 
      x: "This is x from state", 
      y: "This is y from state" 
    } 
  } 
 
  render() { 
    let x1 = this.state.x; 
    let y1 = this.state.y; 
 
    return ( 
       
        
{x1}
 
        {y1}
 
       
    ); 
  } 
 } 
 export default App; 
```
## Состояние обновления
Вы можете изменить данные, хранящиеся в состоянии вашего приложения, используя метод `setState` на вашем компоненте.
```js
this.setState({ value: 1 }); 
```
Имейте в виду, что `setState` является асинхронным, поэтому вы должны быть осторожны при использовании текущего состояния для установки нового состояния. Хорошим примером этого может быть, если вы хотите увеличить значение в своем состоянии.
#### Неправильный путь
```js
this.setState({ value: this.state.value + 1 }); 
```
Это может привести к непредвиденному поведению в вашем приложении, если код выше вызывается несколько раз в том же цикле обновлений. Чтобы этого избежать, вы можете передать функцию обратного вызова `setState` для `setState` вместо объекта.
#### Правильный путь
```js
this.setState(prevState => ({ value: prevState.value + 1 })); 
```
## Состояние обновления
Вы можете изменить данные, хранящиеся в состоянии вашего приложения, используя метод `setState` на вашем компоненте.
```js
this.setState({value: 1}); 
```
Имейте в виду, что `setState` может быть асинхронным, поэтому вы должны быть осторожны при использовании текущего состояния для установки нового состояния. Хорошим примером этого может быть, если вы хотите увеличить значение в своем состоянии.
##### Неправильный путь
```js
this.setState({value: this.state.value + 1}); 
```
Это может привести к непредвиденному поведению в вашем приложении, если код выше вызывается несколько раз в том же цикле обновлений. Чтобы этого избежать, вы можете передать функцию обратного вызова `setState` для `setState` вместо объекта.
##### Правильный путь
```js
this.setState(prevState => ({value: prevState.value + 1})); 
```
##### Чистый путь
```
this.setState(({ value }) => ({ value: value + 1 })); 
```
Если требуется только ограниченное количество полей в объекте состояния, для очистки кода может использоваться уничтожение объекта.
### Больше информации
*   [Реакция - состояние и жизненный цикл](https://reactjs.org/docs/state-and-lifecycle.html)
*   [Реакция - подъемное положение вверх](https://reactjs.org/docs/lifting-state-up.html)
*   [React Native - State Up](https://facebook.github.io/react-native/docs/state.html)