首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Reactjs和Bootstraps一次显示一个折叠内容

使用Reactjs和Bootstraps一次显示一个折叠内容
EN

Stack Overflow用户
提问于 2019-01-28 07:08:56
回答 1查看 2.3K关注 0票数 1

使用Reactjs和Bootstraps一次显示一个折叠内容。

下面的代码使用jquery和bootstrap4来显示和隐藏折叠内容,当每个按钮一次单击一个并运行良好时。

代码语言:javascript
运行
AI代码解释
复制
<!doctype html>
<html>
    <head>

  <meta charset="utf-8">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
<script>
$( document ).ready(function() {

  $('.collapse').on('show.bs.collapse', function () {

    // hide all accordion except the clicked one
    $('.collapse').not(this).collapse('hide');

  });

});

</script>



    </head>
    <body>


  <a href="#content1"  data-toggle="collapse">Content1..</a>
  <a href="#content2"  data-toggle="collapse">Content2</a>
  <a href="#content3"  data-toggle="collapse">Content3</a>
 <br>





 <div id="content1" class="collapse ">
<h1>Content 1 records</h1>

<a href="#content1" class="btn btn-default" data-toggle="collapse">Close </a>

  </div>


 <div id="content2" class="collapse ">
<h1>Content 2 records</h1>

<a href="#content2" class="btn btn-default" data-toggle="collapse">Close</a>

  </div>

 <div id="content3" class="collapse ">
<h1>Content 3 records</h1>

<a href="#content3" class="btn btn-default" data-toggle="collapse">Close</a>

  </div>



</body></html>

现在我必须在反应式中得到它的等价物。我已经安装了引导程序和Reactjs代码,每次单击按钮时都会显示折叠内容。

这里是我对Reactjs.的问题,我希望它只显示为一个折叠的内容,就像上面的jquery中的一样。请如何将此jquery代码转换为reactjs等效项,或者是否有其他选项?

代码语言:javascript
运行
AI代码解释
复制
$( document ).ready(function() {

  $('.collapse').on('show.bs.collapse', function () {

    // hide all accordion except the clicked one
    $('.collapse').not(this).collapse('hide');

  });

});

这里是Reactjs代码

代码语言:javascript
运行
AI代码解释
复制
import React, { Component, Fragment } from "react";
import { render } from "react-dom";
import $ from 'jquery';



class Collapse extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
    };
  }





    render() {

      return (
        <span>
          <label>
            <ul>



  <a href="#content1"  data-toggle="collapse">Content1..</a>
  <a href="#content2"  data-toggle="collapse">Content2</a>
  <a href="#content3"  data-toggle="collapse">Content3</a>
 <br />


 <div id="content1" class="collapse ">
<h1>Content 1 records</h1>

<a href="#content1" class="btn btn-default" data-toggle="collapse">Close </a>

  </div>


 <div id="content2" class="collapse ">
<h1>Content 2 records</h1>

<a href="#content2" class="btn btn-default" data-toggle="collapse">Close</a>

  </div>

 <div id="content3" class="collapse ">
<h1>Content 3 records</h1>

<a href="#content3" class="btn btn-default" data-toggle="collapse">Close</a>

  </div>



          </ul>
        </label>
      </span>
    );
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-28 14:30:21

下面是一个示例代码,展示了如何做到这一点:

代码语言:javascript
运行
AI代码解释
复制
class App extends React.Component {
  constructor(props) {
    super(props);
    this.toggleAccordion = this.toggleAccordion.bind(this);
    this.state = {
      accordion: [true, false, false],
    };
}

  toggleAccordion(tab) {

    const prevState = this.state.accordion;
    const state = prevState.map((x, index) => tab === index ? !x : false);

    this.setState({
      accordion: state,
    });
  }

  render() {
    return (
      <div className='wrapper'>
                <div id="accordion">
                  <Reactstrap.Card className="mb-0">
                    <Reactstrap.CardHeader id="headingOne">
                      <Reactstrap.Button block color="link" className="text-left m-0 p-0" onClick={() => this.toggleAccordion(0)} aria-expanded={this.state.accordion[0]} aria-controls="collapseOne">
                        <h5 className="m-0 p-0">Collapsible Group Item #1</h5>
                      </Reactstrap.Button>
                    </Reactstrap.CardHeader>
                    <Reactstrap.Collapse isOpen={this.state.accordion[0]} data-parent="#accordion" id="collapseOne" aria-labelledby="headingOne">
                      <Reactstrap.CardBody>
                        1. 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 put a bird
                        on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred
                        nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft
                        beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
                      </Reactstrap.CardBody>
                    </Reactstrap.Collapse>
                  </Reactstrap.Card>
                  <Reactstrap.Card className="mb-0">
                    <Reactstrap.CardHeader id="headingTwo">
                      <Reactstrap.Button block color="link" className="text-left m-0 p-0" onClick={() => this.toggleAccordion(1)} aria-expanded={this.state.accordion[1]} aria-controls="collapseTwo">
                        <h5 className="m-0 p-0">Collapsible Group Item #2</h5>
                      </Reactstrap.Button>
                    </Reactstrap.CardHeader>
                    <Reactstrap.Collapse isOpen={this.state.accordion[1]} data-parent="#accordion" id="collapseTwo">
                      <Reactstrap.CardBody>
                        2. 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 put a bird
                        on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred
                        nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft
                        beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
                      </Reactstrap.CardBody>
                    </Reactstrap.Collapse>
                  </Reactstrap.Card>
                  <Reactstrap.Card className="mb-0">
                    <Reactstrap.CardHeader id="headingThree">
                      <Reactstrap.Button block color="link" className="text-left m-0 p-0" onClick={() => this.toggleAccordion(2)} aria-expanded={this.state.accordion[2]} aria-controls="collapseThree">
                        <h5 className="m-0 p-0">Collapsible Group Item #3</h5>
                      </Reactstrap.Button>
                    </Reactstrap.CardHeader>
                    <Reactstrap.Collapse isOpen={this.state.accordion[2]} data-parent="#accordion" id="collapseThree">
                      <Reactstrap.CardBody>
                        3. 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 put a bird
                        on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred
                        nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft
                        beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
                      </Reactstrap.CardBody>
                    </Reactstrap.Collapse>
                  </Reactstrap.Card>
                </div>        
      </div>
    );
  }

}

ReactDOM.render( < App / > ,
  document.getElementById('root')
);
代码语言:javascript
运行
AI代码解释
复制
.wrapper {
  margin: 50px;
}
代码语言:javascript
运行
AI代码解释
复制
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reactstrap/6.0.1/reactstrap.full.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap.min.css" crossorigin="anonymous">
<div id="root" />

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54404814

复制
相关文章
python使用moviepy模块对视频进行操作
前段时间需要对多个视频进行合并,还需要对一个视频按需求进行截切成多个视频,然而网上虽然有现成的工具。
狼啸风云
2020/01/14
1.6K0
Python视频编辑库:MoviePy
MoviePy是一个关于视频编辑的python库,主要包括:剪辑,嵌入拼接,标题插入,视频合成(又名非线性编辑),视频处理,和自定制效果。可以看gallery中的一些实例来了解用法。MoviePy可以读写所有的音频和视频格式,包括GIF,通过python2.7+和python3可以跨平台运行于window/Mac/Linux,下面是一个在IPython notebook的运行实例。 demo_preview.jpeg 实例
py3study
2020/01/02
2.2K0
Python使用tkinter+moviepy+pyaudio开发视频播放器
使用tkinter制作界面,播放mp4、avi视频,需要安装扩展库moviepy和pyaudio,可以参考之前推送过的文章或查阅相关资料。
Python小屋屋主
2020/05/08
1.7K0
Python使用tkinter+moviepy+pyaudio开发视频播放器
Python视频剪辑工具moviePy
关注了很多的公众号,大佬们的骚操作层出不穷,看的我跃跃欲试。也想整一下。跟在大佬们的后面好看风景(复现操作)。
云深无际
2021/04/14
2K0
Python视频剪辑工具moviePy
使用Python+moviepy连接不同尺寸的视频文件
如果直接连接多段不同尺寸的视频文件,后面几段可能会出现花屏的现象。可以使用VideoFileClip对象的resize()方法调整至相同大小,然后再进行连接就可以了。ImageFileClip对象也具有同样的resize()方法。
Python小屋屋主
2020/02/13
3.8K0
使用Python+moviepy连接不同尺寸的视频文件
创建和发布 Python 包
如果你和我一样,希望将编写的 Python 实用程序与同事共享,最好的方法是制作一个软件包:它很容易安装,而且不需要复制粘贴。
老齐
2021/04/30
9790
创建和发布 Python 包
如何发布自己的 python 包?
本文以笔者实际发布的 python 包 imgkernel 为例。因此,在本文所有出现 imgkernel 的地方,都替换成读者自己项目或包的名称。 同时,imgkernel 也托管在 github 上,后续 master 分支会更新,但是项目单独检出的 pkg 分支将保持与本文内容一致,不再改动。因此,可以将此分支 clone 下来作为新项目启动工程。clone pkg 分支的方法如下:
我是一条小青蛇
2019/10/23
6260
如何发布自己的 python 包?
moviepy,短视频生成
moviepy是一个用于视频编辑的python模块,能够实现基本的操作,比如视频的裁剪,拼接,插入标题等等 甚至还自带了一些高级的特效,以后再说。当然,gif格式的读写也在其内。
福贵
2021/01/08
1.7K0
保姆教程:构建与发布Python包
通常,如果您正在创建 Python 包,要么是因为有一些想要与他人分享的代码,要么是因为您对想要分享的东西有一定的想法。
数据科学工厂
2023/02/27
1.4K0
保姆教程:构建与发布Python包
使用dotnet Cli向nuget发布包
长话短说, 今天分享如何在nuget.org创建并发布.NET Standard package。
有态度的马甲
2020/06/10
1.2K0
python:使用moviepy合并m3u8格式的视频
视频网站或者客户端缓存下来的文件很多时候都是m3u8格式的文件,也就是拆成了很多段的视频,一个m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist)或者是一个主列表(Master Playlist)。
生信菜鸟团
2022/04/08
1.9K0
python:使用moviepy合并m3u8格式的视频
python也能玩视频剪辑!moviepy操作记录总结
前几篇文章咱们介绍了一下图片的处理方式,今天咱们说说视频的处理。python能够支持视频的处理么?当然是肯定的,人生苦读,我用python。万物皆可python。
菜鸟小白的学习分享
2020/07/14
1.3K0
Python包:json扩展包demjson使用
Json在编程中是一种轻量级的文件格式,在本地开发或者web开发中使用较多。参考维基百科介绍如下:
用户3578099
2020/09/22
2.9K0
Python+moviepy进行音频剪辑、拼接和格式转换
1、使用pip命令安装Python扩展库moviepy。 2、查看音频原文件的属性,尤其是比特率,下图所示是一个用手机录制的音频文件的信息 3、编写代码,截取上面音频文件中的几段,然后拼接到一起。 4
Python小屋屋主
2021/07/19
2K0
使用typescript开发angular模块(发布npm包)
创建模块 初始化package.json文件 执行命名 npm init -y 会自动生成package.json文件如下,name默认为文件夹名称 { "name": "MZC-Ng-Api", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords"
易兒善
2018/08/21
1.3K0
使用typescript开发angular模块(发布npm包)
python学习笔记5.4-包的发布
本文介绍了如何利用Python包的发布工具发布自己的Python包。主要包括了setup.py和MANIFEST.ni文件的介绍和编写,以及包安装的过程。
锦小年
2018/01/02
5730
如何使用npm发布自己的npm包
一. 创建 在npm的官网上注册一个账号,https://www.npmjs.com/ 1:在本地通过npm init 初始化一个项目,并建一个index.js 文件,因为index.js为默认进入的文件,如下: image-ab2ede5fb9d14ab8bb059eb63257c67c.png 2:在本地将该创建的项目打开,并在index.js编写想要写的文件(这里简单写一个排序),如下: image-1dc4644452b844869943897ce6cfd223.png 3:接下来通过npm
小吕
2022/06/16
1.5K0
如何使用npm发布自己的npm包
如何使用npm发布自己的npm包
一. 创建 在npm的官网上注册一个账号,https://www.npmjs.com/ 1:在本地通过npm init 初始化一个项目,并建一个index.js 文件,因为index.js为默认进入的文件,如下: 2:在本地将该创建的项目打开,并在index.js编写想要写的文件(这里简单写一个排序),如下: 3:接下来通过npm login来登录你之前创建的npm账号,如下: 4:npm pubish 二. 使用 npm install 包名 三. 版本更新 更改版本号 重新发布
小吕
2022/09/26
3.8K0
如何使用npm发布自己的npm包
提取视频中的音频——python三行程序搞定「建议收藏」
  身处数据爆炸增长的时代,各种各样的数据都飞速增长,视频数据也不例外。我们可以使用 python 来提取视频中的音频,而这仅仅需要安装一个体量很小的python包,然后执行三行程序!   语音数据在数据分析领域极为重要。比如可以分析语义、口音、根据人的情绪等等。可以应用于偏好分析、谎话检测等等。
全栈程序员站长
2022/08/26
1.5K0
提取视频中的音频——python三行程序搞定「建议收藏」
点击加载更多

相似问题

DBIx::Class和DBIx::Abstract?

19

Catalyst中的DBIx::Class升级(DBIx::Class::Schema::Loader)

11

如何修改DBIx::Class::Row?

23

DBIx::Class::ResultSet问题

10

DBIx::Class临时列

10
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文