我有一个简单的代码
<test>
<ul>
<li each={ books }> { title }</li>
</ul>
<button type="button" name="button" onclick={ loadBooks }>Load books</button>
<script>
'use strict';
this.books = [];
let offset = 0;
this.on('mount', () => {
console.log('mounted');
});
this.on('update', () => {
console.log('updated');
});
loadBooks () {
fetch('/api/books?limit=10&offset='+offset)
.then(response => response.json())
.then(books => {
offset+=10;
this.books = books;
// this.update();
})
.catch(err => console.log(err));
}
</script>
在我的 app.js 中,我只需要 riot,test.tag 并且riot.mount('#root', 'test');
这是初始化屏幕,为什么在 mount 之前触发更新?
当我第一次点击时,它记录了更新触发但视图没有重新渲染
,第二次点击后,事件更新触发并重新渲染了视图
如果我this.update();
在承诺中取消注释,事件更新将触发两次
upd:如果删除this.books = books
和写入this.update({books});
事件更新将触发两次,并且渲染将起作用,但为什么是 2 次???