Javascript 米特里尔:vnode.attrs和vnode.state之间的区别

Javascript 米特里尔:vnode.attrs和vnode.state之间的区别,javascript,mithril.js,Javascript,Mithril.js,在Mithril中创建新组件时,vnode.attrs.value和vnode.state.value之间有什么区别?如中所述: 陈述 在重绘之间持久化的对象。它由 在需要时使用核心引擎。在POJO组件Vnode中,状态继承 原型通常来自组件对象/类。类内组件 vnodes它是类的一个实例。在闭包组件中,它是 由闭包返回的对象 属性 DOM属性、事件、属性和生命周期方法的哈希映射 例如,请查看此代码 class Hello { constructor(height, width

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

如中所述:

陈述 在重绘之间持久化的对象。它由 在需要时使用核心引擎。在POJO组件Vnode中,状态继承 原型通常来自组件对象/类。类内组件 vnodes它是类的一个实例。在闭包组件中,它是 由闭包返回的对象

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

输出将显示状态是从组件构造函数初始化的。而是从m()传递属性

通常,在上下文中使用对象时,可以使用attrs将数据传递给对象(例如,将URL传递给组件以供ajax使用)。相反,使用状态在重绘过程中保存组件的本地数据(例如,重置Purpose的字段初始状态)

如中所述:

陈述 在重绘之间持久化的对象。它由 在需要时使用核心引擎。在POJO组件Vnode中,状态继承 原型通常来自组件对象/类。类内组件 vnodes它是类的一个实例。在闭包组件中,它是 由闭包返回的对象

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

输出将显示状态是从组件构造函数初始化的。而是从m()传递属性

一般来说,当在上下文中使用attr时,可以使用attr将数据传递给对象(es.将URL传递给组件以用于ajax)。相反,使用state在重绘过程中保存组件的本地数据(例如,reset purpouse的字段初始状态)