2017-05-29 32 views

回答

3

正如documentation說:

國家

是重繪之間持久的對象。它在需要時由 核心引擎提供。在POJO組件vnodes中,狀態從組件對象/類繼承原型 。在類組件 vnodes中,它是類的一個實例。在關閉組件中,它是關閉返回的對象 。

ATTRS

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'})}}) 

See fiddle

輸出會告訴你,狀態從組件構造函數初始化。而attrs則是從m()傳入的。

通常,在上下文中使用attrs時,可以使用attrs將數據傳遞給對象(例如,將URL傳遞給組件以使用ajax)。取而代之的是使用狀態來持續重繪組件的本地數據(例如復位聲明的字段初始狀態)