JavaScript way (this)
Сохраните его в this
объекте (конструктор создает и возвращает его).
/* inside of constructor */
this.selectedValue = 'mm';
/* outside of constructor, but inside of class mthods*/
console.log(this.selectedValue); // 'mm'
this.selectedValue = 'qq';
JavaScript way (переменная stati c) )
Сохраните его как переменную состояния c, которая будет доступна вне класса.
/* inside of constructor */
HomeScreen.selectedValue = 'mm';
/* outside of constructor, inside AND outside of class*/
console.log(HomeScreen.selectedValue); // 'mm'
HomeScreen.selectedValue = 'qq';
JavaScript способ (закрытие)
ps это возможно , но не рекомендуется (совсем не безопасно)
Вы можете поднять объявление переменной, переместив его за пределы своего класса. В этом случае все внутренние компоненты класса могут взять переменную из замыкания и прочитать / перезаписать эту переменную.
Способ реагирования (состояние)
Если вы хотите видеть обновления пользовательского интерфейса при изменении переменной, у вас есть использовать способ реактивности (подписка на изменения). Reacts предоставляет ему props
и state
. Если вы хотите обработать внутреннюю реактивную переменную класса, вы должны использовать state
. В этом случае каждый раз, когда вы меняете состояние, ваш React вызывает метод класса render()
.
/* inside of constructor */
this.state = { selectedValue: 'mm' };
/* outside of constructor, inside of class methods */
console.log(this.state.selectedValue); // 'mm'
this.setState({ selectedValue: 'qq' });
tip с setState
Метод this.setState
isyn c, React обрабатывает этот метод в asyn c способ выполнить некоторые оптимизации, объединяя множество обновлений.
Так что если у вас есть такой код в методе класса, вы можете получить результат ниже. (обновление не немедленное)
this.setState({ selectedValue: 'qq' });
console.log(this.state.selectedValue) // 'mm'
Но ваш метод render()
будет обрабатывать его правильно.
render() {
console.log(this.state.selectedValue); // 'qq'
/* ... */
}