Реагировать на настройку состояния путаницы приложения для вложенного дочернего компонента

Я разработчик встраиваемых систем, новичок в React и немного борюсь с поведением дочерних компонентов и вложенных дочерних компонентов.

Я понимаю, что для повторного рендеринга любого компонента его состояние должно измениться. Я использую пример компонента меню, в котором есть компонент элемента. Когда происходит какое-то событие глобального уровня, я хочу изменить текст, отображаемый компонентами элемента.

Вот скрипт, который показывает некоторый код, который, как я ожидаю, будет работать:

https://codesandbox.io/s/dark-rain-8mfsp?file=/src/App.tsx

При нажатии на div вызывается функция меню setText, которая вызывает компонент элемента, устанавливая состояние. Это состояние используется в функции рендеринга компонента элемента, поэтому я ожидаю повторного рендеринга и элемента, и меню.

Вместо этого я получаю сообщение об ошибке, говорящее о том, что я не могу установить состояние объекта, который еще не смонтирован. Я бы подумал, что он был установлен..

Возможно, проблема в том, как я связал объявленные компоненты с компонентами в функциях рендеринга, вызвав this.componentname.render(), но как еще это можно было сделать?

Заранее спасибо!

Привет. У вас слишком много запутанных концепций о React, поэтому ответы на ваши вопросы на самом деле не принесут вам пользы. Вам будет полезнее ознакомиться с официальной документацией и пройти «быстрый путь» здесь: reactjs.org/docs/components-and-props.html.

zhulien 20.12.2020 16:22
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Что такое компоненты React? Введение в компоненты | Типы компонентов
Что такое компоненты React? Введение в компоненты | Типы компонентов
Компонент - это независимый, многократно используемый фрагмент кода, который делит пользовательский интерфейс на более мелкие части. Например, если мы...
Введение в одну из самых важных концепций в React - функциональное программирование.
Введение в одну из самых важных концепций в React - функциональное программирование.
React разработан с использованием концепции функционального программирования, поэтому понимание функционального программирования важно для изучения...
Руководство спасателя React по созданию масштабируемых приложений
Руководство спасателя React по созданию масштабируемых приложений
А, React. Это одна из самых популярных библиотек JavaScript. Ее любят за гибкость, простоту использования и, будем честны, за то, что она позволяет...
0
1
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот рабочая версия вашей песочницы. https://codesandbox.io/s/lucid-bird-qecj0?file=/src/App.tsx:0-899

Я вижу, что вы новичок, чтобы реагировать. Я бы посоветовал вам использовать хуки вместо компонентов класса.

Привет, KnowYourElements, я очень ценю рабочую версию, спасибо. Интересно, что во время изучения React мне внушили, что реквизиты неизменяемы и не должны использоваться для контента, который будет меняться, но вместо этого вы должны использовать состояние. Кроме того, для моего фактического приложения компонент элемента будет довольно сложным с несколькими функциями (на самом деле это будет массив флажков, которые динамически меняются, и каждый флажок имеет другую функцию), поэтому я не уверен, что смогу избежать использования класса компонент. Разве это не возможно так, как я пытался?

mttjcksn 20.12.2020 16:53

Невозможно сделать так, как вы пытались. Просто потому, что React работает иначе. Вы можете использовать компоненты на основе классов или функций. Это действительно не имеет значения. Но обратите внимание, компоненты на основе функций являются более новыми по сравнению с компонентами на основе классов. Я бы порекомендовал вам прочитать это простое руководство. Он использует компоненты на основе классов, которые могут вам помочь. reactjs.org/tutorial/tutorial.html#before-we-start-the-tutor‌​ial

KnowYourElements 20.12.2020 17:05

Интересно, я думал, что начинаю понимать React, но, очевидно, он еще не пришелся мне по душе. Я сделаю этот урок - ура!

mttjcksn 20.12.2020 17:12

Другие вопросы по теме