view will not be triggered because the vnode representing the component shares the same reference, and therefore the render process doesn&#39;t diff them. You should always call components in the view to ensure a new vnode is created:</p>
<pre><code class="lang-javascript">// PREFER
var Counter = {
    count: 0,
    view: function(vnode) {
        return m(&quot;div&quot;,
            m(&quot;p&quot;, &quot;Count: &quot; + vnode.state.count ),

            m(&quot;button&quot;, {
                onclick: fu