Я хочу отображать состояние, которое обновляется при каждом кадре анимации запроса.
Я хочу инкапсулировать состояние с помощью метода обновления и соответствующего компонента:
Но это не удается, потому что это неправильное использованиеМифриловые компоненты.
import * as Vnode from 'mithril/render/vnode';
import * as h from 'mithril/hyperscript';
export default function Play() {
// background is another encapsulation like Play
let background = new Background(this);
let data;
this.init = d => {
data = d;
background.init();
};
this.update = delta => {
background.update(delta);
};
this.component = ({
view() {
return h('div.' + data,
[Vnode(background.component)]
);
});
}
Код рендеринга:
import mrender from 'mithril/render';
import * as Vnode from 'mithril/render/vnode';
export default function MRender(mountPoint) {
this.render = (component) => {
mrender(mountPoint, Vnode(component));
};
}
Использование:
let mrender = new MRender(element);
let play = new Play();
function step() {
play.update();
mrender.render(Vnode(play.component));
requestAnimationFrame(step);
};
step();
Я хочу, чтобы изменения состояния и рендеринг кода находились в одном месте, потому чтосостояние связано с анимацией просмотра.