[英]riot js this.update strange behavior
我有一个简单的代码
<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中,我只是要求防暴,test.tag并执行riot.mount('#root', 'test');
这是init屏幕,为什么要在安装前触发更新? 当我第一次单击时,它会记录触发更新的日志,但视图不会重新呈现 第二次点击后,事件更新被触发并重新呈现视图
如果我取消注释this.update();
内部承诺中,事件更新将触发两次
更新:如果删除this.books = books
并编写this.update({books});
事件更新将触发两次,并且渲染将起作用,但是为什么要2次?
1) mount
前update
:这在@next / 3.0.0中已修复,如下所示: https : //github.com/riot/riot/issues/1661
2)为什么要进行2x update
:可能,一种来自标签,另一种与子标签有关。 这是在这里被问到的: https : //muut.com/i/riot-js/using : why-update-event-is-trigg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.