あなたはおそらくのいずれかが必要ウィジェット切り替える必要がある場合:あなたは手元にダイナミックを持って述べてきたので
dyn :: MonadWidget t m => Dynamic t (m a) -> m (Event t a) Source
または
widgetHold :: MonadWidget t m => m a -> Event t (m a) -> m (Dynamic t a)
を、我々はつもり使用していますdyn
:
app = do
switched <- button "Alternate!"
flag <- foldDyn ($) False (not <$ switched) -- just to have some Dynamic t Bool
let w = myWidget <$> flag
void $ dyn w
myWidget :: MonadWidget t m => Bool -> m()
myWidget False = blank
myWidget True = el "div" $ blank
あなたワットあれば、基本的なルールは、その反射のhiger次の性質のためでありますあなたが値としてウィジェットを生成するEvent/Dynamicを持つ必要があります。 dyn
は、そのパラメータとしてDynamic t (m a)
を取り(と適切に、widgetHold
がEvent t (m a)
を取る理由です。そして、我々は値として私たちのウィジェット建物作用を有するダイナミックを持っているDynamic t Bool
上にマッピングされてきた理由です。
それはダイナミックでもないことを、言及する価値があります/ widgetHoldはレンダリングを高速化するためにバーチャルdom/diffingを行います。リフレクシヴでは、何が更新されているかをより明示することができます(Dynamic/Event t Textはノード全体を再レンダリングせずにノードテキストに直接影響を与えます)。ページの大部分がスワップされず、パフォーマンスが大幅に低下する可能性があります。
あなたは 'Dynamic'を参照していますか?(http://hackage.haskell.org/package/b ase-4.9.0.0/docs/Data-Dynamic.html)は通常のデータ型です。 – Alec