私は Cycle.JS を学習している途中で、挑戦に遭遇しました。HTTP 呼び出しから結果を取得するコンポーネントがあり、この応答を indexDB に保持したいと考えています。ただし、永続化の要求は別のコンポーネントの責任であると感じています。
私が持っている質問は次のとおりです。
- これは、indexDB への HTTP 応答を永続化するカスタム ドライバーのユース ケースですか?
- 別のコンポーネントは、作成していないリクエストのレスポンス ストリームにどのようにアクセスしますか?
- HTTP ソースからカテゴリを選択しようとすると、コンソールに何も記録されません。私は xstream を使用しているので、ストリームはホットで、デバッグが出力されることを期待しています。何が起きてる?
以下は、HTTP 呼び出しを行うコンポーネントです。
import { Feed } from './feed'
export function RssList ({HTTP, props}, feedAdapter = x => x) {
const request$ = props.url$
.map(url => ({
url: url,
method: 'GET',
category: 'rss'
}))
const response$ = HTTP
.select('rss')
.flatten()
.map(feedAdapter)
const vDom$ = response$
.map(Feed)
.startWith('')
return {
DOM: vDom$,
HTTP: request$
}
}
アプリレベルで応答にアクセスしようとする私の試みは次のとおりです。
export function main (sources) {
const urlSource = url$(sources)
const rssSink = rss$(sources, urlSource.value)
const vDom$ = xs.combine(urlSource.DOM, rssSink.DOM)
.map(([urlInput, rssList]) =>
<div>
{urlInput}
{rssList}
</div>
)
sources.HTTP.select('rss').flatten().debug() // nothing happens here
return {
DOM: vDom$,
HTTP: rssSink.HTTP
}
}