如何在 Cycle.js/dom 中启用属性渲染?

How do you enable rendering of attributes in Cycle.js/dom?

我有以下片段:

      button('.textbutton', {
          type: "button",
          onclick: `toggleVisibility('#abs-${submission.submission_id}');`
        },
        'Abstract'
      ),
      a( {href: "https://localhost:8080"}, 'View Article'),
      div(`#abs-${submission.submission_id}`,
        {style: 'display:none'}, submission.abstract
      ),

这似乎呈现为:

<button class="textbutton">Abstract</button>
<a>View Article</a>
<div id="abs-1405603">Text not shown on SO...</div>

请注意 none 的属性正在呈现。我在这个文件中的 cycle.js 导入很简单:

import {VNode, div, a, button, h3, img, hr, b, p, span} from "@cycle/dom";

snabbdom

应该是

a({
  attrs: {
    href: '#'
  }
}, ['link'])

活动在 on 下进行,例如

button('.textbutton', {
  attrs: {
    type: 'button'
  },
  on: {
    click: () => {} // here goes function
  },
}, ['Abstract'])

您必须使用键 attrs 创建对象,然后使用属性。

只有 modules classstyle 这样的方法才有效。 class 以 CSS class 作为键,条件作为值,例如

div({
  class: {
    'block': true,
    'hidden': isVisible === false
  }
}, [/**/])

当条件为假时,class 将不存在。

style 就像 CSS 样式键 - 值:

div({
  style: {
    'display': 'none'
  }
}, [/**/])

同样,对于 Cycle,您不应该自己将事件直接附加到 DOM,而是调用源驱动程序 DOM 来执行此操作,例如sources.DOM.select('a').events('click') 然后你就有了点击流。