Reactjs 如何在react中的链接中应用活动菜单?
我想在点击Reactjs 如何在react中的链接中应用活动菜单?,reactjs,Reactjs,我想在点击Link时添加活动类,我已经应用了onClick函数,但它不起作用,当我点击Link时,它调用active\u菜单函数,它将其状态更改为true,但当页面加载仪表板再次更改其状态时,有人能帮我解决这个问题吗 constructor(props) { super(props); this.state = { isVisible: false, location: [], active_dashboard: false, ac
Link
时添加活动类,我已经应用了onClick函数,但它不起作用,当我点击Link时,它调用active\u菜单
函数,它将其状态更改为true,但当页面加载仪表板再次更改其状态时,有人能帮我解决这个问题吗
constructor(props) {
super(props);
this.state = {
isVisible: false,
location: [],
active_dashboard: false,
active_review: false,
active_competitors: false,
active_profile: false,
};
this.updateModal = this.updateModal.bind(this);
this.logout = this.logout.bind(this);
this.storedid = this.storedid.bind(this);
this.active_menu = this.active_menu.bind(this);
this.getlocation()
}
active_menu(id) {
if (id == "dashboard") {
this.setState({ active_dashboard: true, active_review: false, active_competitors: false, active_profile: false })
} else if (id == "review") {
this.setState({ active_dashboard: false, active_review: true, active_competitors: false, active_profile: false })
} else if (id == "competitors") {
this.setState({ active_dashboard: false, active_review: false, active_competitors: true, active_profile: false })
} else if (id == "profile") {
this.setState({ active_dashboard: false, active_review: false, active_competitors: false, active_profile: true })
}
}
<ul className="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
<li className="nav-item has-treeview menu-open" onClick={() => { this.active_menu('dashboard') }}>
<Link to="/dashboard" className={(this.state.active_dashboard) ? 'active nav-link' : 'nav-link'} id="dashboard">
<i className="nav-icon fa fa-home"></i>
<p>
Dashboard
</p>
</Link>
</li>
<li className="nav-item has-treeview menu-open" onClick={() => { this.active_menu('review') }}>
<Link to="/review" className={(this.state.active_review) ? 'active nav-link' : 'nav-link'} id="review" >
<i className="nav-icon fa fa-comments" ></i>
<p>
Reviews
</p>
</Link>
</li>
</u>
构造函数(道具){
超级(道具);
此.state={
isVisible:false,
地点:[],
活动仪表板:错误,
活动检查:错误,
活跃竞争者:错误,
活动配置文件:false,
};
this.updateModal=this.updateModal.bind(this);
this.logout=this.logout.bind(this);
this.storedid=this.storedid.bind(this);
this.active\u menu=this.active\u menu.bind(this);
这个文件名为getlocation()
}
活动菜单(id){
如果(id=“仪表板”){
this.setState({active_dashboard:true,active_review:false,active_competitors:false,active_profile:false})
}否则,如果(id=“审查”){
this.setState({active_dashboard:false,active_review:true,active_competitors:false,active_profile:false})
}else if(id=“竞争对手”){
this.setState({active_dashboard:false,active_review:false,active_competitors:true,active_profile:false})
}else if(id==“profile”){
this.setState({active_dashboard:false,active_review:false,active_competitors:false,active_profile:true})
}
}
- {this.active_菜单('dashboard')}>
仪表板
- {this.active_菜单('review')}>
评论
您可以使用反应路由器中的组件。一个特殊版本的链接,它将在呈现元素与当前URL匹配时向呈现元素添加样式属性
<NavLink to="/dashboard" activeClassName="active">
Dashboard
</NavLink>
仪表板
您还可以使用路由器连接。这使您的组件可以访问This.props.history当前路由的位置。您可以使用react router中的组件。一个特殊版本的链接,它将在呈现元素与当前URL匹配时向呈现元素添加样式属性
<NavLink to="/dashboard" activeClassName="active">
Dashboard
</NavLink>
仪表板
您还可以使用路由器连接。这使您的组件可以访问This.props.history当前路线在哪里。使用React钩子:
import React, {useState} from 'React'
const Menu = () => {
const [activeMenu, setActiveMenu] = useState()
return (
<ul
className="nav nav-pills nav-sidebar flex-column"
data-widget="treeview"
role="menu"
data-accordion="false"
>
<li className="nav-item has-treeview menu-open">
<Link
id="dashboard"
to="/dashboard"
className={activeMenu == 'dashboard' ? 'active nav-link' : 'nav-link'}
onClick={() => { setActiveMenu('dashboard') }}
>
<i className="nav-icon fa fa-home"></i>
<p>Dashboard</p>
</Link>
</li>
<li className="nav-item has-treeview menu-open">
<Link
id="review"
to="/review"
className={activeMenu == 'review' ? 'active nav-link' : 'nav-link'}
onClick={() => { setActiveMenu('review') }}
>
<i className="nav-icon fa fa-comments"></i>
<p>Reviews</p>
</Link>
</li>
</u>
)
}
import React,{useState}来自“React”
常量菜单=()=>{
const[activeMenu,setActiveMenu]=useState()
返回(
-
{setActiveMenu('dashboard')}
>
仪表板
-
{setActiveMenu('review')}
>
评论
)
}
使用React钩子:
import React, {useState} from 'React'
const Menu = () => {
const [activeMenu, setActiveMenu] = useState()
return (
<ul
className="nav nav-pills nav-sidebar flex-column"
data-widget="treeview"
role="menu"
data-accordion="false"
>
<li className="nav-item has-treeview menu-open">
<Link
id="dashboard"
to="/dashboard"
className={activeMenu == 'dashboard' ? 'active nav-link' : 'nav-link'}
onClick={() => { setActiveMenu('dashboard') }}
>
<i className="nav-icon fa fa-home"></i>
<p>Dashboard</p>
</Link>
</li>
<li className="nav-item has-treeview menu-open">
<Link
id="review"
to="/review"
className={activeMenu == 'review' ? 'active nav-link' : 'nav-link'}
onClick={() => { setActiveMenu('review') }}
>
<i className="nav-icon fa fa-comments"></i>
<p>Reviews</p>
</Link>
</li>
</u>
)
}
import React,{useState}来自“React”
常量菜单=()=>{
const[activeMenu,setActiveMenu]=useState()
返回(
-
{setActiveMenu('dashboard')}
>
仪表板
-
{setActiveMenu('review')}
>
评论
)
}
提供指向React文档的链接,其中NavLink
被声明为React的一部分。它给出了以下错误:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。@NikulPanchal,您是否从react路由器导出了NavLink?提供到react文档的链接,其中NavLink
被声明为react的一部分。它给出了以下错误:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。@NikulPanchal,您是否从react路由器导出NavLink?这是否回答了您的问题?这回答了你的问题吗?