Я открываю ReactJS и материал-ui (http://material-ui.com/).Материал UI - Открыть LeftNav/Drawer на AppBar щелчок
Я пытаюсь создать шаблон по умолчанию для своего приложения. Я хочу использовать AppBar и LeftNav (переименованный в ящике в новых версиях) в разделенных компонентах.
У AppBar есть кнопка меню по умолчанию. Я хочу использовать его, чтобы открыть LeftNav, но я не знаю, как я могу вызвать функцию компонента LeftBarComponent, чтобы открыть его.
Я почти понял, как общаться между компонентами, но в моем случае я не знаю, как я мог это сделать, потому что нет документации об этом. Единственное, что я знаю, чтобы открыть элемент LeftNav является использование LeftNav.toggle()
http://material-ui.com/#/components/left-nav
Спасибо за вашу помощь.
Default.jsx
use strict';
var React = require('react');
var pageStore = require('../../stores/page');
var MainNavbar = require('../modules/navbar.jsx');
var LeftNavbar = require('../modules/leftbar.jsx');
var getState = function() {
return {
title: pageStore.get().title
};
};
var DefaultComponent = React.createClass({
mixins: [pageStore.mixin],
componentDidMount: function() {
pageStore.emitChange();
},
getInitialState: function() {
return getState();
},
render: function() {
return (
/* jshint ignore:start */
<div className="main-container">
<MainNavbar />
<LeftNavbar />
<div className="content">
{this.props.children}
</div>
</div>
/* jshint ignore:end */
);
},
// Event handler for 'change' events coming from store mixins.
_onChange: function() {
this.setState(getState());
}
});
module.exports = DefaultComponent;
navbar.jsx
'use strict';
var React = require('react');
var routeActions = require('../../actions/routes');
var MUI = require('material-ui');
var AppBar = MUI.AppBar;
// Navbar Component
// Application main menu
// Usage: <Navbar />
var NavbarComponent = React.createClass({
render: function() {
return (
/* jshint ignore:start */
<AppBar title="MyApp" onMenuIconButtonTouchTap={ this._handleClick }>
<div className="clear"></div>
</AppBar>
/* jshint ignore:end */
);
},
_handleClick: function()
{
console.log('ok');
}
});
module.exports = NavbarComponent;
leftbar.jsx
'use strict';
var React = require('react');
var routeActions = require('../../actions/routes');
var MUI = require('material-ui');
var LeftNav = MUI.LeftNav;
var MenuItem = MUI.MenuItem;
var menuItems = [
{ route: 'home', text: 'Home' },
{ route: 'about', text: 'About' },
];
// LeftBar Component
// Application left menu
// Usage: <LeftBar />
var LeftBarComponent = React.createClass({
render: function() {
return (
/* jshint ignore:start */
<LeftNav menuItems={menuItems} docked={false} />
/* jshint ignore:end */
);
},
_handleClick: function()
{
console.log('ok');
}
});
module.exports = LeftBarComponent;
Также см. Ответы на этот вопрос: http://stackoverflow.com/questions/22639534/pass-props-to-parent-component-in-react-js –