reactjs、bootstrap 和 npm 导入 - 未定义 jQuery

IT技术 javascript twitter-bootstrap reactjs npm create-react-app
2021-05-02 12:50:46

我正在尝试在我的 React 应用程序中使用引导程序,但它给了我一个Error: Bootstrap's JavaScript requires jQuery. 我已经导入了 jquery 并尝试了其他帖子中的以下内容:

import $ from 'jquery';
window.jQuery = $;
window.$ = $;
global.jQuery = $;

但是,我仍然收到not defined错误消息。

解决这个问题的唯一方法是把

  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>

进入 index.html

有没有办法导出 jquery 或让引导程序能够检测/读取它?

我通过以下方式调用我的引导程序

import bootstrap from 'bootstrap'
4个回答

import bootstrap from 'bootstrap'

const bootstrap = require('bootstrap');

我尝试使用“create-react-app”构建一个项目,发现导入module的加载顺序与导入顺序不同。这就是boostrap找不到jquery的原因。通常,您可以在这种情况下使用“require”。它适用于我的电脑。

import $ from 'jquery';
window.jQuery = $;
window.$ = $;
global.jQuery = $;
const bootstrap = require('bootstrap');
console.log(bootstrap)

相关事项:

imports 被吊起来

https://stackoverflow.com/a/29334761/4831179

imports 应该先去

值得注意的是,导入被提升,这意味着导入的module将在它们之间散布的任何语句之前进行评估。将所有导入一起放在文件的顶部可以防止规范的这一部分引起的意外。

来自https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/first.md

你在使用 webpack 吗?如果是这样,请将其添加到您的webpack.config.js.

plugins: [
  new webpack.ProvidePlugin({
    jQuery: 'jquery',
    $: 'jquery'
  })
],

使用create-react-app时,首先需要像这样安装Jquery包。

sudo npm install jquery --save 

和像这样react引导

 sudo npm install react-bootstrap --save

现在在 JS 文件中,您可以像这样同时使用 jquery 和 bootstrap。

 import $ from 'jquery';
 import { Carousel, Modal,Button, Panel,Image,Row,Col } from 'react-bootstrap';

您可以将此 url 用于react引导程序组件 https://react-bootstrap.github.io/components.html

您可以像这样使用具有 onclick 功能的按钮

<Button bsStyle="primary" bsSize="large" active onClick={this.getData()}>Sample onClick</Button>

在里面

 getData(){
 $.ajax({
   method: 'post',
   url:'http://someurl/getdata',
   data: 'passing data if any',
   success: function(data){
      console.log(data);
      alert(data);
      this.setState({
         some: data.content,
         some2: data.content2,
      });
   },
   error: function(err){
      console.log(err);
   }
 });

所有这些都是使用 jquery 和 bootstrap 的基本示例,如果您需要更多,您可以对此写评论。

编辑:我从你的评论中看到你的问题似乎是关于将数据表与 jquery 集成,你应该考虑重新制定你的问题。

请记住,React 使用虚拟DOM,而 jQuery 完全在 DOM 中运行。

因此,考虑到这一点,让 DataTables 和 jQuery 发挥良好的作用似乎几乎是不可能的。你可以显示 DataTables,但是当你用 React 做任何其他事情时,它基本上会回到使用它自己的虚拟DOM,这会与 DataTables 混淆。

一些react友好的数据表替代品

DataTables 相关讨论: