2017-05-29 4 views

答えて

3

documentationに述べたように:

状態

再描画の間に保持されたオブジェクト。必要に応じてコアエンジン によって提供されます。 POJOコンポーネントのvノードでは、状態はコンポーネントオブジェクト/クラスからプロトタイプ的に を継承します。クラスコンポーネント vnodeでは、クラスのインスタンスです。クロージャコンポーネントでは、クロージャによって返されるオブジェクトは です。

ATTRS

DOM属性、イベント、プロパティおよびライフサイクルメソッドのハッシュマップ。

たとえば、このコードを見てください。

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を使用してデータを渡すことができます(例:ajax用のコンポーネントへのURLを渡します)。代わりに、状態を使用して、再描画を介してコンポーネントのローカルデータを永続化します(例:リセットpurpouseのフィールド初期状態)

関連する問題