[1]
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
Здесь вы можете спросить или написать обо всём, что касается Веб-разработки.
написать о чем-нибудь...
Метки:
Лучшее
[52]
16 Окт 2011, 15:38
Вывести все элементы POST
[просмотров 1208]
[49]
17 Сен 2011, 15:13
FileZilla перетаскивание файлов
[просмотров 1125]
[74]
31 мая 2011, 11:48
Python проверка существования переменной
[просмотров 1087]
[58]
29 мая 2012, 12:08
Узнать версию PHP из командной строки
[просмотров 1082]
[315]
16 Июл 2011, 20:03
Python работа с MySQL
[просмотров 1073]
[2]
26 Июн 2018, 23:10
Как в React сделать поле input file с кнопкой?
[просмотров 991]
[119]
21 Июл 2011, 14:04
Python Imaging Library (PIL)
[просмотров 984]