Компонент класса React внутри компонента Function не перерисовывается после изменения состояния.Javascript

Форум по Javascript
Ответить
Гость
 Компонент класса React внутри компонента Function не перерисовывается после изменения состояния.

Сообщение Гость »


99% моего приложения — это функциональные компоненты, но есть компонент устаревшего класса (MyPDF), вложенный в функциональный компонент (MyApp), который мне приходится использовать (это слишком много усилий, чтобы переписать класс как функцию). Существует значение состояния url, передаваемое компоненту класса из функционального компонента. Однако когда затем url изменяется в родительском функциональном компоненте, эти изменения не распространяются на компонент класса и не перерисовываются.

Компонент класса также написан на TypeScript, тогда как родительский функциональный компонент — на JavaScript, если это вообще имеет значение.

myapp.js

import React, { useState } из «реагировать»; импортировать MyPDF из «./mypdf.tsx»; функция MyApp() { const [url, setURL] = useState("https://initialpdf.com"); const onClick = () => { setURL("https://newpdf.com"); }; console.log("URL", URL); // этот URL меняется правильно возвращаться ( Это мое приложение PDF (функция): {url
Изменить URL ); } экспортировать MyApp по умолчанию;
mypdf.tsx

импортировать React из «реагировать»; Состояние интерфейса { URL: строка; } класс MyPDF расширяет React.Component { состояние = { URL: "" }; конструктор (реквизит: любой) { супер(реквизит); this.state.url = props.data; } оказывать() { return PDF (Класс): {this.state.url; // почему this.state.url не меняется? } } экспортировать MyPDF по умолчанию; Как заставить компонент класса повторно отображать и отслеживать изменения в родительском состоянии?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»