VDS за 300р от нашего партнера SpaceWeb
[2]
19 Сен 2018, 21:56

Можно ли ре-рендерить компонент React без вызова setState?

У меня есть внешний (для компонента) наблюдаемый объект, за изменениями которого я слежу. Когда объект обновляется, он эмиттит событие, и я хочу ре-рендерить компонент, когда он это событие «услышит».
С React.render верхнего уровня это было возможно, но внутри компонента он не работает (что имеет некий смысл, так как метод render просто возвращает объект).
 
Вот пример кода:
export default class MyComponent extends React.Component {

  handleButtonClick() {
    this.render();
  }

  render() {
    return (
      <div>
        {Math.random()}
        <button onClick={this.handleButtonClick.bind(this)}>
          Click me
        </button>
      </div>
    )
  }
}


Нажатие на кнопку вызывает this.render(), но это не то, что на самом деле вызывает рендеринг (это понятно, потому что текст, созданный с помощью {Math.random()}, не изменяется). Но, если я просто вызываю this.setState() вместо this.render(), он отлично работает.

В общем, вопрос такой: обязательно ли для компонентов React иметь state, чтобы выполнить re-render? Есть ли способ заставить компонент рендериться по требованию без изменения state?

Комментарии (1)
jaga
19 Сен 2018, 22:37
#

Можно в компоненте вызвать this.forceUpdate(), для принудительного ре-рендеринга
подробнее — здесь

Добавить комментарий

Войдите, чтобы написать о чем-нибудь...
Вход Регистрация
Web.onRails
Здесь вы можете спросить или написать обо всём, что касается Веб-разработки.
написать о чем-нибудь...
Метки:
Лучшее
[4]
10 Окт 2018, 15:33
Как запретить просмотр сайта по IP?
[просмотров 3627]
[118]
21 Июл 2011, 14:04
Python Imaging Library (PIL)
[просмотров 3056]
[52]
16 Окт 2011, 15:38
Вывести все элементы POST
[просмотров 2831]
[74]
31 мая 2011, 11:48
Python проверка существования переменной
[просмотров 2491]
[58]
29 мая 2012, 12:08
Узнать версию PHP из командной строки
[просмотров 2321]
[315]
16 Июл 2011, 20:03
Python работа с MySQL
[просмотров 2305]
[100]
19 Дек 2014, 16:16
User-agent для Internet Explorer 11
[просмотров 1862]
[1]
13 Фев 2019, 14:23
Как получить значение CSS в javascript
[просмотров 1837]

Вести с Хабра