@ Vibhor в интересах того, чтобы кто-то еще воспользовался этим ответом и, возможно, помог вам улучшить ваше решение, я бы посоветовал вам взглянуть на контролируемые примеры для вкладок наДокументация SUIR .
То, что вы предложили и внедрили в качестве решения, определенно является обходным решением.Вы используете DOM для имитации события щелчка, чтобы изменить автоматически контролируемое состояние этого компонента.То, что вы хотите сделать, это непосредственно контролировать это состояние самостоятельно.Из коробки многие SUIR-компоненты сами обрабатывают состояние.
Я собрал для вас пример CodeSandbox, демонстрирующий, как это будет работать с состоянием внутреннего компонента, распространяющегося на пример в документации SUIR:
https://codesandbox.io/s/k9ozm3w5n7
import React, { Component } from "react";
import { render } from "react-dom";
import { Button, Container, Tab } from "semantic-ui-react";
class TabExampleActiveIndex extends Component {
state = { activeIndex: 1 };
handleRangeChange = e => this.setState({ activeIndex: e.target.value });
handleTabChange = (e, { activeIndex }) => this.setState({ activeIndex });
render() {
const { activeIndex } = this.state;
const panes = [
{
menuItem: "Tab 1",
render: () => (
<Tab.Pane>
Tab 1 Content{" "}
<Button
content="Tab 2"
onClick={this.handleRangeChange}
value={1}
/>
</Tab.Pane>
)
},
{
menuItem: "Tab 2",
render: () => (
<Tab.Pane>
Tab 2 Content{" "}
<Button
content="Tab 3"
onClick={this.handleRangeChange}
value={2}
/>
</Tab.Pane>
)
},
{
menuItem: "Tab 3",
render: () => (
<Tab.Pane>
Tab 3 Content{" "}
<Button
content="Tab 1"
onClick={this.handleRangeChange}
value={0}
/>
</Tab.Pane>
)
}
];
return (
<div>
<div>activeIndex: {activeIndex}</div>
<input
type="range"
max="2"
value={activeIndex}
onChange={this.handleRangeChange}
/>
<Tab
panes={panes}
activeIndex={activeIndex}
onTabChange={this.handleTabChange}
/>
</div>
);
}
}
export default TabExampleActiveIndex;