На самом деле мне удалось заставить анимацию работать, портировав код в вопросе в kepler.gl app.js следующим образом:
сначала добавьте следующий метод в определение класса App:
class App extends Component {
_animate() {
this.setState({});
this._animation = window.requestAnimationFrame(this._animate);
}
затем добавьте componentDidMount () {
this._animate();
добавить в componentWillMount () {
// (эта строка вызывается в конструкторе приложения в примерах deck.gl.)
this._animate = this._animate.bind(this);
и, наконец, в componentWillUnmount () {
window.cancelAnimationFrame(this._animation);
что (я предполагаю) происходит здесь:
- вызов this.setState ({}); изменит внутреннее состояние приложения и, таким образом, вызовет рендеринг нового кадра.
- передача вызова анимации в window.requestAnimationFrame (this._animate); приведет к бесконечному циклу, когда браузер вызывает _animate () 60 раз в секунду.
- бесконечный цикл будет прерван, когда приложение (компонент) будет отключено.
кто-нибудь с более глубоким пониманием, пожалуйста, не стесняйтесь расширять мое очень поверхностное объяснение