Как присвоить props в state в react.js?

Пользователь

от ciara , в категории: JavaScript , 8 месяцев назад

Как присвоить props в state в react.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от montana_hand , 7 месяцев назад

@ciara 

В React.js состояние компонента (state) не должно зависеть от свойств компонента (props), поскольку свойства могут изменяться во время работы приложения. Однако, если вам действительно нужно присвоить свойство (props) компонента (например, для использования в методах жизненного цикла), то вы можете сделать это в методе жизненного цикла componentDidUpdate().


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      myProp: null
    };
  }

  componentDidUpdate(prevProps) {
    if (this.props.myProp !== prevProps.myProp) {
      this.setState({ myProp: this.props.myProp });
    }
  }

  render() {
    return (
      <div>
        {/* ... */}
      </div>
    );
  }
}


В этом примере мы сначала инициализируем состояние компонента myProp значением null в конструкторе. Затем мы используем метод componentDidUpdate() для обновления состояния myProp при изменении свойства myProp. Если свойство myProp изменилось, мы вызываем метод setState(), чтобы обновить значение myProp в состоянии компонента.


Обратите внимание, что в данном случае мы должны сравнивать this.props.myProp с prevProps.myProp, чтобы определить, изменилось ли свойство. Если мы будем использовать this.props.myProp напрямую в setState(), то это может привести к бесконечному циклу перерисовки компонента, так как вызов setState() приведет к вызову componentDidUpdate() и так далее.