【问题标题】:React-bootstrap accordion not working properlyReact-bootstrap 手风琴无法正常工作
【发布时间】:2015-01-16 17:34:48
【问题描述】:

我正在努力学习反应。试一试,我正在尝试使用 react-bootstrap 并尝试使用 react-bootstrap 手风琴来实现手风琴。首先我尝试使用 ButtonToolBar,效果很好。

var ButtonToolbar = ReactBootstrap.ButtonToolbar;
var Button = ReactBootstrap.Button;
var buttonsInstance = (
    <ButtonToolbar>
      <Button>Submit</Button>
      <Button>Cancel</Button>
    </ButtonToolbar>
);

React.renderComponent(
    buttonsInstance,
    document.getElementById('app')
);

但是,react-bootstrap 的手风琴代码不起作用。它显示了内容,但不像我们在手风琴的情况下那样。代码如下:

var Accordion = ReactBootstrap.Accordion;
var Panel = ReactBootstrap.Panel;

var accordionInstance = (
    <Accordion>
      <Panel header="Collapsible Group Item #1" key={1}>
        Content1
      </Panel>
      <Panel header="Collapsible Group Item #2" key={2}>
        Content2
      </Panel>
      <Panel header="Collapsible Group Item #3" key={3}>
        Content3
      </Panel>
    </Accordion>
);

React.renderComponent(
    accordionInstance,
    document.getElementById('app')
);

我也尝试过使用,它的行为也一样。我从 here 那里得到帮助。

有一个类似的问题here。但是,在我的情况下,如果不自定义 ReactBootstrp.Panel,我就无法让它工作。

任何想法,我怎样才能让它工作?

【问题讨论】:

    标签: javascript accordion reactjs react-bootstrap


    【解决方案1】:

    所以我希望您已经找到了问题的答案,但是下面的代码应该可以工作。我认为您只需将key={} 更改为eventKey={} 让我知道这是否不适合您。

    var React = require('react');
    var ReactPropTypes = React.PropTypes;
    var Accordion = require('react-bootstrap').Accordion;
    var Panel = require('react-bootstrap').Panel;    
    
    var LeftSideInfo = React.createClass({
    render: function () {
        var open = 3;
        return (
          <Accordion>
            <Panel header="Recommended Assignments" eventKey='1'>
              Some Info here
            </Panel>
            <Panel header="Candidate Information" eventKey='2'>
              More Info here
            </Panel>
            <Panel header="Contact Information" eventKey={open}>
              Yet another Panel
            </Panel>
           </Accordion>
        );
      }
    });
    
    module.exports = LeftSideInfo;
    

    作为旁注,我试图弄清楚如何在单击打开另一个面板时阻止它关闭一个面板。我想我只需要玩eventKey

    【讨论】:

    • @QuietOmen 你是否设法同时打开多个 react bootstrap 手风琴?
    • @HuwDavies 我猜你的意思是在一个页面上有多个手风琴,它们的状态是分开处理的?如果是这样,我已经有一年多没有弄乱这个代码了。所以我不记得我是否同时有多个。如果您在此处发布问题并提供链接,我很乐意尝试帮助您找到解决方案。
    • @QuietOmen 多个手风琴打开是的,所以我想它们必须单独处理。我将在今天晚些时候和下周尝试它,所以如果我遇到真正的麻烦,我会告诉你;)谢谢!
    【解决方案2】:

    单独使用面板以保持多个面板打开。 Accordion 将自动折叠非活动面板。

    【讨论】:

    • 欢迎来到 Stack Overflow!请通过添加至少一个代码示例来充实您的答案。
    【解决方案3】:

    问题在于 beta 8 版本。 使用 npm 我 react-bootstrap@1.0.0-beta.9 解决了这个问题。

    【讨论】:

    • 这个问题是五年前问的,你参考的是2019年4月和5月的版本,现在的版本远远超过1.0.0-beta.9。你能解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2018-08-21
    • 2014-09-21
    • 2021-06-15
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多