我正在将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);
}
},....