Мы создадим простое приложение React, которое будет отображать настоящее имя супергероя при нажатии кнопки.

Давайте начнем.

Сначала мы создадим компонент Superhero с атрибутом name в состоянии. Этот компонент сначала отобразит это name.

Теперь давайте создадим функцию changeName() в компоненте Superhero. Эта функция изменит имя в состоянии на настоящее имя супергероя.

Теперь у нас есть компонент Superhero, который показывает имя супергероя, и функция, которая обновляет имя до его настоящего имени.

Полный компонент Superhero будет выглядеть так:

Теперь давайте создадим компонент App, который будет отображать этот компонент Superhero и кнопку. Когда мы нажимаем кнопку, отображается настоящее имя супергероя.

Мы добавили функцию handleClick(), которая будет вызываться, когда пользователь нажимает кнопку. Нам нужно найти способ обновить состояние дочернего компонента, то есть компонента Superhero.

Мы создали функцию changeName() в компоненте Superhero. Эта функция покажет настоящее имя супергероя. Если мы сможем вызвать эту функцию из компонента App, наша работа сделана. Итак, мы назовем эту функцию.

Здесь нам на помощь приходят ссылки.

Давайте создадим ссылку на компонент Superhero в компоненте App. Вот код для этого.

Здесь мы создали ссылку с использованием метода React.createRef() и прикрепили ссылку к компоненту Superhero с помощью атрибута ref.

Теперь мы сможем ссылаться на узел Superhero, используя this.superheroElement.current. Мы также сможем вызывать функцию changeName() в компоненте Superhero, используя this.superheroElement.current.changeName().

Давайте обновим нашу handleClick() функцию в нашем App компоненте, чтобы она вызывала changeName() функцию.

Наша функция handleClick() будет выглядеть так.

Вы можете проверить полный код в песочнице ниже.



Теперь мы узнали, как обновить состояние дочернего компонента из родительского компонента 🎉. Я надеюсь, что это было полезно.