Cycle.jsを使い始めたばかりですが、これまでのところ愛用していますが、アプリのコンポーネント化に問題があります。Cycle.jsのコンポーネントを使用した問題
私は他のものから、後でインポートするこのコンポーネントがあります。
// components/header.js
function intent (DOMSource, localStorage) {
const menuClick$ = DOMSource.select('.header .menu').events('click')
return {
menuClick$,
}
}
function model (menuClick$) {
const menuToggle = menuClick$
.startWith(false)
.mapTo(1)
.fold((acc, x) => acc + x, 0)
.map(x => x % 2 === 0)
return xs
.combine(
menuToggle,
).map(([toggle]) => ({
toggle,
}))
}
function view (state$) {
return state$.map(state => (
<header className="header" style={header}>
<div className="menu" style={menu}>
<div className="user" style={container}>
<div className="image" style={image} />
<div className="name" style={user}>Karen Serfaty</div>
<div className="arrow" style={arrow} />
</div>
{ state.toggle
? <div className="items" style={list}>
<span id="logout">Cerrar sesión</span>
</div>
: <div />
}
</div>
</header>
))
}
function Header (sources) {
const {
menuClick$,
} = intent(sources.DOM)
const state$ = model(menuClick$)
const vtree$ = view(state$)
return {
DOM: vtree$,
}
}
export default Header
をそして、私はここでそれをインポートする:
// components/index.js
import { html } from 'snabbdom-jsx';
import xs from 'xstream'
import Header from './header'
function main (sources) {
const header = Header(sources)
const vtree$ = xs.of(
<span>
{header.DOM}
</span>
)
return {
DOM: vtree$
}
}
export default main
Header
コンポーネントをインポートする場合で何か問題がある
import {run} from '@cycle/run'
import {makeDOMDriver} from '@cycle/dom'
import main from './components'
const drivers = {
DOM: makeDOMDriver('#app'),
}
run(main, drivers)
:10
そして、ここでは、アプリのルートです私のcomponents/index.js
ファイルですか?
- 編集 -
私は、コードを実行したときに、私は、ブラウザ上でundefined
を得ていることを言及するのを忘れてしまいました。あなたのconst header
私はちょうど同じ事を掲示するために@mciparelliします。ありがとう! – keyserfaty