私はこの例をhttps://github.com/slamdata/purescript-halogen/blob/v0.12.0/examples/deep-peek/src/Main.purs#L58(下記の関連部分)に適合させようとしていますが、孫を覗くのではなく、ちょうど子供を覗きたい、この場合はpeekList
です。私はまた、peekList
のpeek関数のパラメータとしてスロットタイプを保持したいと思います。Purescript Halogen DeepPeek Child(孫の代わりに)
peek :: forall a. H.ChildF ListSlot ListQueryP a -> H.ParentDSL State (ListStateP g) Query ListQueryP g ListSlot Unit
peek = coproduct peekList peekTicker <<< H.runChildF
peekList :: forall a. ListQuery a -> H.ParentDSL State (ListStateP g) Query ListQueryP g ListSlot Unit
peekList _ =
-- we're not actually interested in peeking on the list.
-- instead of defining a function like this, an alternative would be to use
-- `(const (pure unit))` in place of `peekList` in the `coproduct` function
pure unit
peekTicker :: forall a. H.ChildF TickSlot TickQuery a -> H.ParentDSL State (ListStateP g) Query ListQueryP g ListSlot Unit
peekTicker (H.ChildF _ (Tick _)) = H.modify (\st -> { count: st.count + 1 })
peekTicker _ = pure unit
スロットパラメータを失うことなく実際にpeekList
をピックアップするにはどうすればよいですか?
私はH.runChildF
削除しようとしました:
peek = coproduct peekList (const (pure unit))
をしてからpeekList
に戻っスロットパラメータで追加:
peekList :: forall a. H.ChildF ListSlot ListQuery a -> H.ParentDSL State (ListStateP g) Query ListQueryP g ListSlot Unit
しかし、その後peek
に、私はエラーを取得する「タイプが一致しませんでした。 ChildF ListSlotとタイプCoproduct(ChildF ListSlot ListQuery)を一致させようとしているときにタイプCoproductを持つChildF "
peekList
の代わりにpeek
を使用しようとすると、タイプChildF ListSlot(Coproduct ListQuery(ChildF TickSlot TickQuery))とタイプChildFを一致させようとしているときに、ListQueryタイプのタイプCoproduct ListQuery(ChildF TickSlot TickQuery) ListSlot ListQuery "
本当にありがとうございました!
この回答は正しいですが、「peek」メカニズムはもはやハロゲンには存在しません! (v1.0.0以降) –
@gb。うん、2週間前に更新されたハロゲン/ purescript-routingの例がなかったので、私は0.12.0を使うことに決めました。今はありますが、私はあまりにも遠すぎます – sportanova