Я работаю над приложением, которому необходимо асинхронно получать некоторые данные и сохранять состояние в родительском компоненте, а также передавать ссылку на данные дочерним элементам.Проблема в том, что после загрузки данных в состояние реквизиты не обновляются до нового состояния.Как сделать так, чтобы реквизиты автоматически обновлялись при изменении родительского состояния?
Вот мой код:
class App extends Component {
state = {
contract: null,
ethereum: null,
user: null
};
componentDidMount() {
let ethereum = window.ethereum || null;
this.setState({ ethereum });
}
getContainerClasses() {
let classes = "container";
classes += this.state.ethereum === null ? " invisible" : "";
return classes;
}
render() {
return (
<React.Fragment>
<Nav />
<div className={this.getContainerClasses()}>
<Intro ethereum={this.state.ethereum} />
<Load />
<Deploy />
</div>
</React.Fragment>
);
}
}
class Intro extends Component {
constructor() {
super();
this.handleClick = this.handleClick.bind(this);
}
render() {
return (
<React.Fragment>
...
</React.Fragment>
);
}
handleClick() {
console.log(this.props.ethereum);
}
getContainerClasses() {
let classes = "container";
classes += this.props.ethereum !== null ? " " : "";
return classes;
}
}
Как вы можете видеть в моем примере, я пытаюсьвойти this.props.ethereum
по нажатию кнопки.К сожалению, он не регистрирует данные, доступные в компоненте App
(видимом в Chrome React Tools).
Редактировать: Я неправильно прочитал свои журналы.Реквизит обновляется, но getContainerClasses()
не срабатывает при изменении состояния.
По сути, я пытаюсь скрыть контент, пока данные еще не загружены, и открыть его, как только он появится.