首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mithril:不能使用m.redraw和m.render

Mithril:不能使用m.redraw和m.render
EN

Stack Overflow用户
提问于 2017-09-14 09:36:49
回答 1查看 261关注 0票数 0

我有一个应用程序,我想控制什么时候重新绘制视图。

我可以用m.mountm.redraw让它工作

代码语言:javascript
复制
var count = 0;

var Counter = {
    view: function() {
        return m('main', [
            m('h1', ('Count: ' + count))
        ])
    }
}

m.mount(document.body, Counter);

window.setInterval(function () {
    count++;
    m.redraw();
}, 200);
代码语言:javascript
复制
<html>
<body>
    <script src="https://unpkg.com/mithril/mithril.js"></script>
    <script src="index.js"></script>
</body>
</html>

但是,如果我使用m.render (因为我不需要mithril自动重新绘制),它就不再工作了:

代码语言:javascript
复制
var count = 0;

var Counter = {
    view: function() {
        return m('main', [
            m('h1', ('Count: ' + count))
        ])
    }
}

m.render(document.body, m(Counter)); // <-- The only changed line

window.setInterval(function () {
    count++;
    m.redraw();
}, 200);
代码语言:javascript
复制
<html>
<body>
    <script src="https://unpkg.com/mithril/mithril.js"></script>
    <script src="index.js"></script>
</body>
</html>

当使用m.render而不是m.mount时,如何使mithril重绘

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-14 09:36:49

正如mithril文档中所述的那样,这里

注意,m.redraw只在使用m.mountm.route时才能工作。如果您通过m.render呈现,则应该使用m.render重绘。

代码语言:javascript
复制
var count = 0;

var Counter = {
    view: function() {
        return m('main', [
            m('h1', ('Count: ' + count))
        ])
    }
}

m.render(document.body, m(Counter));

window.setInterval(function () {
    count++;
    m.render(document.body, m(Counter)); // <-- Use m.render here, not m.redraw
}, 200);
代码语言:javascript
复制
<html>
<body>
    <script src="https://unpkg.com/mithril/mithril.js"></script>
    <script src="index.js"></script>
</body>
</html>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46215561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档