Задать вопрос
@lookingfor2

Почему не происходит новый рендеринг при изменении props?

Родительский компонент
Тут переменные с данными
const dataSystem = {
        data: GetSystem,
        title: 'Системные сообщения',
    };
    const dataServices = {
        data: GetServices,
        title: 'Кредитный рейтинг',
    };
хук с состоянием
const [objectOperationsData, setObjectOperationsData] = useState(dataLoan);

дочерний компонент, куда передаем objectOperationsData
<RenderData props={objectOperationsData}/>


дочерний компонент

class RenderData extends Component {
    constructor(props) {
        super(props);
        this.state = {
            obtainedData: {},
            loading: false,
        };
    }

    componentDidMount() {
        console.log(this.props.props.data().then(response => {console.log(response.data)}))
        this.props.props.data().then(response => {
            this.setState({obtainedData: response.data});
            this.setState({loading: !this.state.loading});
        });
    }


Пропс меняется, но данные в состояние не переписываются, как сделать чтобы состояние менялось и как следствие, заново рендерилось все
  • Вопрос задан
  • 169 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
@lookingfor2 Автор вопроса
И отдельно стоит отметить функцию componentWillReceiveProps(nextProps), которая вызывается при обновлении объекта props. Новые значения этого объекта передаются в функции в качестве параметра. Как правило, в этой функции устанавливаются те свойства компонента, в том числе из this.state, которые зависят от значений из props.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽