Purescript: Halogen HTML DSL only Отображает теги "id"
Я использую purescript-halogen
v0.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.