@tonybeat

Как сделать переключение табов?

var Tabs = React.createClass({
        render :  function () {
            return (
               <div id="tb">
                   <ul>
                       <li><a href='#tabs-1'>Эконом</a></li>
                       <li><a href='#tabs-2'>VIP</a></li>
                       <li><a href='#tabs-3'>Минивен</a></li>
                   </ul>
                   <section className='tabs-content'>
                       <article id='tabs-1'>1</article>
                       <article id='tabs-2'>2</article>
                       <article id='tabs-3'>3</article>
                   </section>
               </div>
            );
        }
    });
    ReactDOM.render(
        <Tabs  />,
        document.getElementById('tabs_content')
    );


как сделать, чтоб табы переключались между собой...и отображался контент?
  • Вопрос задан
  • 2736 просмотров
Решения вопроса 1
@tonybeat Автор вопроса
Вот код, но он не срабатывает. Ошибок не выдает, ДОМ такой :
joxi.ru/eAON5LoTXdQ52o
class Tabs extends React.Component {
        constructor() {
            super()
            this.state = {tabIndex: 0}
        }
        render() {
            return (
                <div id="tb">
                    <ul role="tablist">
                        <li  role="presentation" onClick={() => this.setState({tabIndex: 0})}></li>
                        <li  role="presentation" onClick={() => this.setState({tabIndex: 1})}></li>
                        <li  role="presentation" onClick={() => this.setState({tabIndex: 2})}></li>
                    </ul>

                    <section className='tabs-content'>
                        {() => this.state.tabIndex === 0 ? <article>1</article> : null}
                        {() => this.state.tabIndex === 0 ? <article>2</article> : null}
                        {() => this.state.tabIndex === 0 ? <article>3</article> : null}
                    </section>
                </div>
            );
        }
    }
    ReactDOM.render( <Tabs  />, document.getElementById('tabs_content'));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abberati
frontend-разработчик
Это же реакт. Храните в Tabs.state указатель на открытый таб, в зависимости от него рендерите тот или иной <article/>. Никаких ссылок, никаких role, никаких tabindex.

var Tabs = React.createClass({
        constructor() {
          this.state = {tabIndex: 0}
        }
        render :  function () {
            return (
               <div id="tb">
                   <ul role="tablist">
                       <li  role="presentation" onClick={() => this.setState({tabIndex: 0})}></li>
                       <li  role="presentation" onClick={() => this.setState({tabIndex: 1})}></li>
                       <li  role="presentation" onClick={() => this.setState({tabIndex: 2})}></li>
                   </ul>
                   
                   <section className='tabs-content'>
                       {() => this.state.tabIndex === 0 ? <article>1</article> : null}
                       {() => this.state.tabIndex === 0 ? <article>2</article> : null}
                       {() => this.state.tabIndex === 0 ? <article>3</article> : null}
                   </section>
               </div>
            );
        }
    });
    ReactDOM.render(
        <Tabs  />,
        document.getElementById('tabs_content')
    );
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы