Purescript: Halogen HTML DSL only Отображает теги "id"

Я использую purescript-halogenv0.12.0и я не могу понять, почему только id тег рендеринга.

Это происходит даже с предположительно хорошо поддерживаемыми элементами, такими как div,

Пример:

render = div [ id_ "some-id", name "some-name ] []

Div будет создан, но только с id приписывать. Это происходит с элементами в Halogen.HTML так же как Halogen.HTML.Indexed,

Любая помощь в правильном направлении будет принята с благодарностью.

================================================== ===========

Воспроизведите проблему со следующим.

pulp init
bower i purescript-halogen
npm i virtual-dom

============

module Main where

import Prelude
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, log)

import Halogen as H
import Halogen.HTML (div, text)
import Halogen.HTML.Properties (id_, name, pixels, height, width)
import Halogen.Util (awaitBody, runHalogenAff)

type State = Int
data Query a = Toggle a

ui :: forall g. (Functor g) => H.Component State Query g
ui = H.component { render, eval }
  where
    render :: State -> H.ComponentHTML Query
    render st = div [ id_ "my-id", name "my-name", height (pixels 3), width (pixels 4) ] [ text "here!" ]

    eval :: Query ~> H.ComponentDSL State Query g
    eval (Toggle next) = pure next

main :: forall e. Eff (H.HalogenEffects e) Unit
main = runHalogenAff $ do
  body <- awaitBody
  H.runUI ui 0 body

1 ответ

Это происходит как name не является действительным свойством для divни width или же height - если вы используете Indexed элементы и свойства, которые вы увидите, есть ошибка типа при попытке установить width или же height, Попробуйте изменить div для input и вы увидите свойства, примененные, как они должны быть.

Индексированные элементы позволяют установить name на div однако, это ошибка.

Причина, по которой эти свойства не отображаются в отображаемом HTML, заключается в том, что они задаются как свойства, а не атрибуты. Свойства должны существовать в интерфейсе javascript для элемента, в противном случае они игнорируются. Это не галогеновая вещь, а DOM.

Другие вопросы по тегам