【发布时间】:2021-04-26 01:09:00
【问题描述】:
以下代码按预期工作:它创建了两个计数器按钮,它们保持其状态并在点击时更新:
let Counter = function (vnode) {
let count = 0
return {
view: (vnode) => {
return m("button",
{
onclick: function () {
console.log(count++)
}
}, "Count: " + count)
}
}
}
let Counters = {
view: () => [
m(Counter),
m(Counter),
]
}
m.mount(document.body, Counters)
但是,如果我在单独的变量中定义 Counter 组件数组并将其传递给 Counters 视图函数,则视图将停止更新。状态持续存在,我可以看到控制台记录了递增计数,但屏幕上没有任何变化。这是更新后的代码:
let Counter = function (vnode) {
let count = 0
return {
view: (vnode) => {
return m("button",
{
onclick: function () {
console.log(count++)
}
}, "Count: " + count)
}
}
}
let counters =
[
m(Counter),
m(Counter),
]
let Counters = {
view: () => counters
}
m.mount(document.body, Counters)
为什么会发生这种情况?这是我正在开发的一个更复杂的 Mithril 应用程序的玩具示例,我想对子组件数组进行任意排序。
【问题讨论】:
标签: mithril.js