У меня есть приложение с навигацией вверху (Главная, О программе, Часто задаваемые вопросы). Только на маршруте HOME мне нужно, чтобы меню было скрыто, а затем показано onscroll. Навигация построен в App.jsx, поэтому он отображается на каждой странице. Как включить раскрытие только для этого конкретного маршрута?Показывать навигационный компонент по одному маршруту в Реагировании
Моя выявить компонент
import React, { Component } from 'react';
class NavScroll extends React.Component {
constructor(props){
super(props);
this.state={isHide:false};
this.hideBar = this.hideBar.bind(this)
}
hideBar(){
let {isHide} = this.state
window.scrollY > this.prev?
!isHide && this.setState({isHide:true})
:
isHide && this.setState({isHide:false})
this.prev = window.scrollY;
}
componentDidMount(){
window.addEventListener('scroll',this.hideBar);
}
componentWillUnmount(){
window.removeEventListener('scroll',this.hideBar);
}
render(){
let classHide=this.state.isHide?"hide":""
return <div className={"fixed "+classHide}>
</div>;
}
}
export default NavScroll;
App.jsx
import React, { Component } from 'react';
import NavLink from './global/NavLink.jsx';
import Footer from './global/Footer.jsx';
import NavScroll from './global/NavScroll.jsx';
var App = React.createClass({
render: function(){
return (
<div>
<div>
<NavLink to="/"><img className="logo" alt="HOME"></img></NavLink>
<NavLink to="/about" className="navMenuButton">ABOUT</NavLink>
<NavLink to="/faq" className="navMenuButton">FAQ</NavLink>
</div>
{ this.props.children }
<Footer />
</div>
);
}
});
export default App;
спасибо! Я должен был быть более конкретным и использовать this.props.location, а именно: const location = this.props.location; –
'const {location} = this.props' совпадает с' const location = this.props.location', он просто использует назначение деструктуризации. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring Это действительно не обязательно для одной переменной, но она пригодится, когда вы хотите разрушить число переменных из одного и того же объекта. –
Кроме того, если это решает вашу проблему, вы можете отметить это как правильный ответ. –