Отправка реквизита или изменение состояния ребенка не обновляет рендер в ReactJs

Я новичок в React, так что если кто-нибудь может меня просветить. У меня родительский компонент и дочерний компонент. Я выполняю выборку данных по отцу, а затем передаю новый результат через реквизиты ребенку. Но ребенок не обновляется на рендере. {число остается прежним} Я знаю, что он работает, потому что я использовал console.info как в родительском, так и в дочернем, и значение идеальное, только рендеринг его не показывает.

Родительский компонент добавляет к дочернему элементу свойства qtd:

{this.state.products.map((item)=><div> <Card key = {item.id} id = {item.id} qtd = {item.qtd} title = {item.title} addCardCount = {this.addCardCount} subtractCardCount = {this.subtractCardCount} ref = {instance => { this.card = instance; }} /></div> )}

Затем, когда я добавляю это ребенку:

{ this.props.qtd }

На просмотре ничего не происходит.

Даже когда я изменяю дочернее состояние через родителя, представление остается прежним. Вы знаете, как это сделать лучше? Вы знаете возможные причины, по которым это не работает? Ценю вашу помощь.

Вам нужно показать более полный код (минимальный воспроизводимый пример).

JJJ 26.10.2018 23:12
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
1
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Попробуйте следующее:

В вашем дочернем компоненте:

class Child from React.Component {

   componentDidUpdate(previousProps) {
       if (previousProps !== this.props) {
           this.forceUpdate()
       }
   }

   render() {
       return (<div>{this.props.qtd}</div>)
   }

}

Вы также можете использовать setState () вместо forceUpdate () и сделать условную визуализацию с вашим значением состояния.

Очевидно, что React автоматически перерисовывает компонент при получении новых свойств. В этом весь смысл React.

JJJ 26.10.2018 23:30

@JJJ, ты абсолютно прав, перередактировал ответ. Только что произошла ошибка, так как сегодня у меня была аналогичная проблема, но из-за моей реализации, и я сразу подумал об этом, когда увидел это.

Alex Sánchez 26.10.2018 23:35

Я не знаю, то же самое, но использование функции componentWillReceiveProps также решило проблему. Мне нужно больше узнать о функциях этих компонентов. Спасибо!

Guilherme Nunes 27.10.2018 20:09

@GuilhermeNunes Я опубликовал с использованием компонента disparate, потому что componentWillReceiveProps считается устаревшим кодом и его следует избегать в новом коде (хотя вы все еще можете его использовать) :)

Alex Sánchez 27.10.2018 21:50

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