Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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引导选项卡键添加到当前URL_Reactjs_React Router Dom_React Bootstrap - Fatal编程技术网

Reactjs将选定的react引导选项卡键添加到当前URL

Reactjs将选定的react引导选项卡键添加到当前URL,reactjs,react-router-dom,react-bootstrap,Reactjs,React Router Dom,React Bootstrap,我有component contain React Bootstrap选项卡,如果用户选择这三个选项卡中的任何一个,我希望添加到当前url:- http://localhost:3000/account 选定的选项卡键名称,因此url更改如下:- http://localhost:3000/accountmessages 我尝试过使用props.history.push-in-onSelect函数,但什么也没发生 import React from "react"; impo

我有component contain React Bootstrap选项卡,如果用户选择这三个选项卡中的任何一个,我希望添加到当前url:-

http://localhost:3000/account

选定的选项卡键名称,因此url更改如下:-

http://localhost:3000/accountmessages

我尝试过使用props.history.push-in-onSelect函数,但什么也没发生

import React from "react";
import KhatmaTable from "../components/Account/KhatmasTable";
import Square from "../components/Account/Square";
import Messages from "../components/Account/Messages";
import { Tabs, Tab } from "react-bootstrap";

class Account extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      user: {},
      khatmas: [],
      selectedKey: this.props.location.hash
        ? this.props.location.hash.substring(1)
        : "home",
    };
  }

  render() {
    const count = [this.state.khatmats];
    console.log(this.state.user);
    console.log(this.state.user.khatmas ? this.state.user.khatmas.length : "");
    return (
      <div className="card">
        <div className="card-body">
          <Tabs
            id="controlled-tab-example"
            activeKey={this.state.selectedKey}
            onSelect={(k) => {
              this.setState({ selectedKey: k });
              this.props.history.replace = "account" + "#" + k;
            }}
          >
            <Tab eventKey="home" title="home">
              <div className="row">
                <Square />
              </div>
            </Tab>
            <Tab eventKey="khatmat" title="profile">
              <KhatmaTable />
            </Tab>
            <Tab eventKey="messages" title="messages">
              <Messages />
            </Tab>
          </Tabs>
        </div>
      </div>
    );
  }
}
export default Account;

在呈现之前写下函数,并根据需要修改替换函数中的值部分?tab=${key}

handleSelect = (key) => {
    this.setState({ key });
    this.props.history.replace({
        hash: `${key}`
    })
}
在选项卡内,添加函数名,如下所示

<Tabs onSelect={this.handleSelect} >

希望这有帮助。

在渲染之前写下函数,并根据需要修改替换函数中的值部分?tab=${key}

handleSelect = (key) => {
    this.setState({ key });
    this.props.history.replace({
        hash: `${key}`
    })
}
在选项卡内,添加函数名,如下所示

<Tabs onSelect={this.handleSelect} >

希望这能有所帮助。

如果有人需要@Niraj提供的上述功能作为react hook

import React from "react";
//import bootstrap components
import Tabs from 'react-bootstrap/Tabs';
import Tab from 'react-bootstrap/Tab';

const TabComponent = (props) => {
    //set state from url hash
    const [selectedTab, setSelectedTab] = useState(props.location.hash.substring(1));

    const handleSelect = (e) => {
        //set state
        setSelectedTab(e);
        //update url
        props.history.replace({
            hash: `${e}`
        });
    }

    return (
        //set active key, if no url hash set default to home
        <Tabs 
            activeKey={selectedTab ? selectedTab : 'home'}
            onSelect={(e) => handleSelect(e)}
        >
            <Tab eventKey="home" title="home">
            ....
            </Tab>
            <Tab eventKey="about" title="about">
            ....
            </Tab>
        </Tabs>
    );
}
export default TabComponent;

如果有人需要@Niraj作为react钩子回答的上述功能

import React from "react";
//import bootstrap components
import Tabs from 'react-bootstrap/Tabs';
import Tab from 'react-bootstrap/Tab';

const TabComponent = (props) => {
    //set state from url hash
    const [selectedTab, setSelectedTab] = useState(props.location.hash.substring(1));

    const handleSelect = (e) => {
        //set state
        setSelectedTab(e);
        //update url
        props.history.replace({
            hash: `${e}`
        });
    }

    return (
        //set active key, if no url hash set default to home
        <Tabs 
            activeKey={selectedTab ? selectedTab : 'home'}
            onSelect={(e) => handleSelect(e)}
        >
            <Tab eventKey="home" title="home">
            ....
            </Tab>
            <Tab eventKey="about" title="about">
            ....
            </Tab>
        </Tabs>
    );
}
export default TabComponent;