Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在react中的链接中应用活动菜单?_Reactjs - Fatal编程技术网

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?这是否回答了您的问题?这回答了你的问题吗?