Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: render, props

Можно ли обновить компонент без изменения state?

Проверяет знание альтернативных способов обновления компонентов в React.

Короткий ответ

Да, можно:

  1. Через изменение props (если родитель передаёт новые данные).

  2. Через принудительный ререндер (forceUpdate в классах или хак с useReducer).

  3. Через внешние хранилища (Redux, Context API).

Длинный ответ

1. Через props (родительский компонент):

function Parent() {
  	const [timestamp, setTimestamp] = useState(Date.now());
  	return <Child key={timestamp} />; // Принудительное обновление Child
}

2. Через forceUpdate (только в классовых компонентах):

class MyComponent extends React.Component {
  	handleUpdate = () => {
    		this.forceUpdate(); // Принудительный ререндер
  	};
  	render() { ... }
}

3. Через useReducer (функциональные компоненты):

const [, forceUpdate] = useReducer(x => x + 1, 0);
forceUpdate(); // Вызовет ререндер

4. Через внешние хранилища (Redux, MobX, Context):

const { update } = useContext(MyContext);
update(newData); // Обновит все подписанные компоненты

Итог:

  • Основной способ — изменение state или props.

  • Экстренные случаи — forceUpdate или useReducer.

  • Глобальное управление — через хранилища (Redux, Context).

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • React

    React

Ключевые слова

#render

#props

Подпишись на React Developer в телеграм