У меня есть внешний (для компонента) наблюдаемый объект, который я хочу прослушать для изменений. Когда объект обновляется, он испускает события изменения, а затем я хочу повторно перенести компонент, когда обнаружено какое-либо изменение.
С верхним уровнем 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(), он отлично работает.
Итак, я думаю, мой вопрос: do React компоненты должны иметь состояние, чтобы переименовать? Есть ли способ заставить компонент обновляться по требованию без изменения состояния?