我正在將HTML,CSS和jQuery生成的90%完整網站翻譯成更具前瞻性的反應「應用程序」。我有一些非常基本的校長,我正在努力克服 - 我真的很喜歡react的JSX語言,但努力應對我以前在jQuery中實現的繁重的UI操作。影響與Baobab反應的多個組件的狀態
爲了讓我習慣於以我的網站上最簡單的交互之一開始的概念 - 將鼠標懸停在菜單按鈕上並部分展示側邊菜單(例如20像素)。我的部件結構,像這樣:
var App = React.createClass({
render: function() {
return (
<div id="reactWrap">
<MainNav ref="main-nav"/>
<SideNav projects={PROJECTS} ref="side-nav" />
<RouteHandler projects={PROJECTS} ref="content" />
</div>
)
}
});
MainNav包括了「漢堡包」按鈕,網站標題:
render: function() {
return (
<nav className="fixed-nav">
<div id="menu-button" onMouseEnter={this.teaseMenu} onMouseLeave={this.unteaseMenu} ref="menu-btn">
<span className="menu-line"></span>
</div>
<span className="site-title">Lorem Ipsum</span>
</nav>
)
}
當「#菜單鍵」懸停我改變了狀態樹我使用「menuActions.isHovering()」在「teaseMenu()」中的Baobab中定義了它。
....
teaseMenu: function(e) {
menuActions.isHovering();
// other stuff done
},....
我正在掙扎的是,一旦變化已經在我stateTree受到影響,我不知道該如何然後給這個變化的知識,都依賴於它的其他元素。例如,與「MainNav」完全無關的SideNav和它的子菜單「#menu-button」如何意識到這種變化並相應地改變它的狀態?這隻會在jQuery中需要解決的東西,如下列:
globalVars.menuBtn.on({
mouseenter: function(e) {
var self = $(this);
var movePercentage = (-100 + (20/globalVars.sideNavW * 100))/2;
if (!pageStatus.menuActive) {
globalVars.wrap.addClass('menu-hover');
globalVars.sideNav.css({
'left': movePercentage + '%'
});
menuBtnIn(e, self);
}
},....