ばかげたことをやってみたり、Cycle.js をいじったりしているだけです。そして問題に直面しています。基本的にはボタンのみです。クリックすると、場所がランダムなハッシュに移動して表示されると想定されます。事前定義されたルートがないばかげたルーターのようなものです。すなわち。ルートは動的です。繰り返しますが、これは実用的なものではありません。私はいくつかのものをいじって、Cycle.js を学ぼうとしています。しかし、「追加」ボタンをクリックすると、以下のコードがクラッシュします。ただし、場所は更新されます。実際に「#/asdf」に移動すると、正しいコンテンツが「Hash: #/asdf」で表示されます。フローがエラーでクラッシュする理由がわからない:
render-dom.js:242 TypeError: undefined のプロパティ 'subscribe' を読み取れません(…)
import Rx from 'rx';
import Cycle from '@cycle/core';
import { div, p, button, makeDOMDriver } from '@cycle/dom';
import { createHashHistory } from 'history';
import ranomdstring from 'randomstring';
const history = createHashHistory({ queryKey: false });
function CreateButton({ DOM }) {
const create$ = DOM.select('.create-button').events('click')
.map(() => {
return ranomdstring.generate(10);
}).startWith(null);
const vtree$ = create$.map(rs => rs ?
history.push(`/${rs}`) :
button('.create-button .btn .btn-default', 'Add')
);
return { DOM: vtree$ };
}
function main(sources) {
const hash = location.hash;
const DOM = sources.DOM;
const vtree$ = hash ?
Rx.Observable.of(
div([
p(`Hash: ${hash}`)
])
) :
CreateButton({ DOM }).DOM;
return {
DOM: vtree$
};
}
Cycle.run(main, {
DOM: makeDOMDriver('#main-container')
});
お手伝いありがとう