秘银:vnode.attrs和vnode.state之间的区别

时间:2017-05-29 12:02:11

标签: javascript mithril.js

在Mithril中创建新组件时,vnode.attrs.valuevnode.state.value之间有什么区别?

1 个答案:

答案 0 :(得分:4)

documentation中所述:

国家

  

重绘之间持久存在的对象。它由提供   需要时核心引擎。在POJO组件vnodes中,状态继承   原型来自组件对象/类。在类组件中   vnodes它是类的一个实例。在封闭组件中它是   闭包返回的对象。

ATTRS

  

DOM属性,事件,属性和生命周期方法的散列图。

例如,看看这段代码。

require 'fcm'

fcm = FCM.new(server_key) # Find server_key on: your firebase console on web > tab general > web api key

registration_ids= [device_keys] # Array of keys generated by firebase for devices 

options = {
        priority: "high",
        collapse_key: "updated_score", 
        notification: {
            title: "Message Title", 
            body: "Hi, Worked perfectly",
            icon: "myicon"}
        }

response = fcm.send(registration_ids, options)

See fiddle

输出将显示状态是从组件构造函数初始化的。相反,attrs是从m()传递的。

通常,在上下文中使用attrs时,可以使用attrs将数据传递给对象(例如,将URL传递给组件以进行ajax使用)。而是使用state来跨重绘来保存组件的本地数据(例如,重置purpouse的字段初始状态)