1
在Mithril中創建新組件時,vnode.attrs.value
和vnode.state.value
之間有什麼區別?祕銀:vnode.attrs與vnode.state的區別
在Mithril中創建新組件時,vnode.attrs.value
和vnode.state.value
之間有什麼區別?祕銀:vnode.attrs與vnode.state的區別
正如documentation說:
ATTRS是重繪之間持久的對象。它在需要時由 核心引擎提供。在POJO組件vnodes中,狀態從組件對象/類繼承原型 。在類組件 vnodes中,它是類的一個實例。在關閉組件中,它是關閉返回的對象 。
DOM的hashmap屬性,事件,屬性和生命週期方法。
例如看看這段代碼。
class Hello {
constructor(height, width) {
this.txt = 'from state'
}
view (vnode) {
console.log(vnode.state)
return m("main", [
m("h1", {class: "title"}, "This come "+vnode.attrs.txt),
m("h1", {class: "title"}, "This come "+vnode.state.txt)
])
}
}
m.mount(root, {view: function() {return m(Hello, {txt: 'from attribute'})}})
輸出會告訴你,狀態從組件構造函數初始化。而attrs則是從m()傳入的。
通常,在上下文中使用attrs時,可以使用attrs將數據傳遞給對象(例如,將URL傳遞給組件以使用ajax)。取而代之的是使用狀態來持續重繪組件的本地數據(例如復位聲明的字段初始狀態)