Сброс представления на вкладку по умолчанию с помощью react-web-tabs

#reactjs

#reactjs

Вопрос:

Моя вкладка по умолчанию — «Доход». У меня есть выпадающий компонент поверх вкладки. Если значение в выпадающем списке изменится, мне нужно сбросить представление на вкладку по умолчанию (доход). Пожалуйста, помогите мне в этом.

            <Tabs
              defaultTab="income"
              onChange={(tabId) => { console.log(tabId) }}>
              <TabList>
                <Tab tabFor="income">Income</Tab>
                <Tab tabFor="expense">Expense</Tab>
                <Tab tabFor="liability">Liabilities</Tab>
              </TabList>
              <TabPanel tabId="income">
               <p>Income</p>
              </TabPanel>
              <TabPanel tabId="expense">
                <p>Expense</p>
              </TabPanel>
              <TabPanel tabId="liability">
                <p>Liability</p>
              </TabPanel>
            </Tabs>
  

Ответ №1:

Задайте значение defaultTab по умолчанию в качестве состояния, чтобы оно также было динамическим, и при необходимости обновляйте соответствующим образом (в вашем случае значение onChange вашего выпадающего компонента.

например

  class TabSample extends React.Component {

    state = {
      defaultTab: 'Income'
    }

    onDropdownChange = () => {
     // reset default tab value to initial state
     this.setState({defaultTab: 'Income'})
    }

    render(){
     const { defaultTab } = this.state;
     return <Tabs
              defaultTab={defaultTab}
              onChange={(tabId) => { console.log(tabId) }}>
              <TabList>
                <Tab tabFor="income">Income</Tab>
                <Tab tabFor="expense">Expense</Tab>
                <Tab tabFor="liability">Liabilities</Tab>
              </TabList>
              <TabPanel tabId="income">
               <p>Income</p>
              </TabPanel>
              <TabPanel tabId="expense">
                <p>Expense</p>
              </TabPanel>
              <TabPanel tabId="liability">
                <p>Liability</p>
              </TabPanel>
            </Tabs>
     }

    }