2

を使用していますが、タグだけがレンダリングpurescript-halogen v0.12.0される理由がわかりません。id

これは、 のような十分にサポートされていると思われる要素でも発生しますdiv

例:

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

iddiv が作成されますが、属性のみが含まれます。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
4

1 に答える 1

1

これは、またはに適用する有効なプロパティnameではないため発生しています。要素とプロパティを使用している場合、orを設定しようとすると型エラーが発生します。の を変更してみると、プロパティが適切に適用されていることがわかります。divwidthheightIndexedwidthheightdivinput

nameただし、インデックス付きの要素では、に aを設定できますdivが、これはバグです。

これらのプロパティがレンダリングされた HTML に表示されない理由は、属性ではなくプロパティとして設定されているためです。プロパティは、要素の javascript インターフェイスに存在する必要があります。存在しない場合、プロパティは無視されます。これは DOM ほど Halogen のものではありません。

于 2017-01-18T11:47:46.293 に答える