Bootstrap с React: аккордеон не работает

Я пытаюсь запустить загрузочный аккордеон, где мои панели - это классы React. Почему-то это не работает:

<ReactBootstrap.Accordion>
   <WontWorkPanel pkey={1} />
   <WontWorkPanel pkey={2} />
</ReactBootstrap.Accordion>

http://jsfiddle.net/3azxcquh/

WontWorkPanel — это класс React, который отображает одну панель с ключом this.props.pkey.

Может ли кто-нибудь объяснить мне, что я делаю неправильно, или как сделать это лучше?

Спасибо!


person asPlankBridge    schedule 17.09.2014    source источник


Ответы (1)


Аккордеон клонирует своих дочерних элементов с новыми реквизитами, и эти реквизиты управляют отображением/скрытием компонента Panel. Чтобы это все еще работало с пользовательской оболочкой Panel, вам нужно передать реквизиты из оболочки дочернему элементу Panel:

Скрипт: http://jsfiddle.net/ssorallen/3azxcquh/6/

var WontWorkPanel = React.createClass({
  render: function() {
    return this.transferPropsTo( 
      <ReactBootstrap.Panel header={"WontWork " + this.props.key} key={this.props.key}>
        Anim pariatur cliche reprehenderit, enim eiusmod high life
        accusamus terry richardson ad squid. 3 wolf moon officia aute,
        non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt
        laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua pu
      </ReactBootstrap.Panel>
    );
  }
});
person Ross Allen    schedule 22.09.2014
comment
Новая информация: TransferPropsTo устарел. см.: gist.github.com/sebmarkbage/a6e220b7097eb3c79ab7. - person kcrt; 22.03.2016