我正在尝试在我的 next/react 应用程序中使用 react-tabs 实现一些选项卡。
我有主页project/:id
,始终在 0 索引选项卡中打开,并且在选择每个选项卡时,选项卡名称会添加到路线中,例如:project/:id/one-tab
。
这样,如果我共享链接project/:id/two-tab
,该站点将在 1 索引选项卡中打开。
但我得到了错误
react-dom.development.js:20312 Uncaught Error: Switching between controlled mode (by using
selectedIndex) and uncontrolled mode is not supported in
选项卡.
at Function.copyPropsToState (Tabs.js:65)
at getDerivedStateFromProps (Tabs.js:50)
我的组件看起来像这样
class Project extends React.Component {
constructor(props) {
super(props);
resetIdCounter();
}
state = {
tabIndex: null
};
static async getInitialProps({ query }) {
return { query };
}
render() {
const { query } = this.props;
const { tabIndex } = this.state;
const TAB = {
tab1: 0,
tab2: 1,
};
return (
<div>
<Tabs
selectedIndex={tabIndex || TAB[query.tab]}
onSelect={index => this.setState({ tabIndex: index })}
>
<StyledTabList>
<StyledTab
onClick={() =>
Router.replaceRoute("one-tab", { id })
}
>
One tab
</StyledTab>
<StyledTab
onClick={() => Router.replaceRoute("two-tab", { id })}
>
Two tab
</StyledTab>
</StyledTabList>
</Tabs>
</div>
);
}
}
export default Project;