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