我是ReactJS的新手,我想在我的React应用程序中包括引导
我已经通过npm安装bootstrap -save安装了bootstrap
现在,我想在React应用程序中加载引导CSS和JS。
我正在使用webpack。
webpack.config.js
var config = {
entry: './src/index',
output: {
path: './',
filename: 'index.js'
},
devServer: {
inline: true,
port: 8080,
historyApiFallback: true,
contentBase:'./src'
},
module: {
loaders: [
{
test: /\.js?$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}
]
}
};
module. exports = config;
我的问题是“如何从节点模块中包含引导CSS和JS在ReactJS应用程序中?”如何设置引导包括在我的React应用程序?
你不能在React应用程序中使用基于Jquery的Bootstrap Javascript组件,因为任何试图在React之外操作DOM的行为都被认为是糟糕的做法。在这里你可以阅读更多关于它的信息。
如何在React应用程序中包含Bootstrap:
1)推荐。您可以包括Bootstrap的原始CSS文件作为其他答案指定。
2)看看react-bootstrap库。它是专门为React编写的。
3) Bootstrap 4有反作用带
奖金
这些天我通常避免使用Bootstrap库,因为它提供了随时可用的组件(上面提到的react-bootstrap或reactstrap等等)。当您变得依赖于它们所采用的道具时(您不能在其中添加自定义行为),您就失去了对这些组件生成的DOM的控制。
所以要么只使用Bootstrap CSS,要么不使用Bootstrap。一般的经验法则是:如果你不确定你是否需要它,你就不需要它。我见过很多应用程序,其中包括Bootstrap,但只使用少量的CSS,有时大部分CSS被自定义样式覆盖。
如果你是React的新手,并且使用create-react-app命令行设置,运行下面的npm命令来包含最新版本的bootstrap。
npm install --save bootstrap
or
npm install --save bootstrap@latest
然后将以下import语句添加到index.js文件中。(https://getbootstrap.com/docs/4.4/getting-started/webpack/ # importing-compiled-css)
import '../node_modules/bootstrap/dist/css/bootstrap.min.css';
or
import 'bootstrap/dist/css/bootstrap.min.css';
不要忘记在目标元素上使用className作为属性(react使用className作为属性而不是class)。
请按照下面的链接使用React引导。
https://react-bootstrap.github.io/
安装:
$ npm install --save react react-dom
$ npm install --save react-bootstrap
------------------------------------ 或 -------------------------------------
把Bootstrap CDN for CSS在index.html文件的标签在react和Bootstrap CDN for Js在index.html文件的标签。使用className而不是class
遵循下面的index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<link rel="shortcut icon" href="../src/images/dropbox_logo.svg">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div id="root"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
</body>
</html>
通过npm,你会运行以下程序
npm install bootstrap jquery --save
npm install css-loader style-loader --save-dev
如果bootstrap为4,也添加依赖项popper.js
npm install popper.js --save
将以下内容(作为一个新对象)添加到webpack配置中
loaders: [
{
test: /\.css$/,
loader: 'style-loader!css-loader'
}
将以下内容添加到索引或布局中
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/js/bootstrap.js';
以防万一,如果你可以使用React应用程序推荐使用的yarn,
你可以,
yarn add bootstrap@4.1.1 // this is to add bootstrap with a specific version
这将把引导程序作为依赖项添加到包中。Json也是。
{
"name": "my-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"bootstrap": "4.1.1", // it will add an entry here
"react": "^16.5.2",
"react-dom": "^16.5.2",
"react-scripts": "1.1.5"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
然后在index.js文件中导入bootstrap。
import 'bootstrap/dist/css/bootstrap.css';
如果你在项目中使用CRA(create-react-app),你可以添加这个:
npm install react-bootstrap bootstrap
如果你在你的应用中使用bootstrap,如果它不起作用,那么在index.html中使用这个:
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css"
integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS"
crossorigin="anonymous"
/>
我用上面的方法来解决类似的问题。希望这对你有用:-)
我也有过类似的经历。我的设置如下所示
npm install create-react-app
这将为您提供一个开始的样板代码设置。在App.js文件中使用主逻辑。
稍后,您可以在CLI工具创建的index.html中使用引导CDN。
或
npm install bootstrap popper jquery
然后简单地将其包含在App.js文件中。
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap/dist/js/bootstrap.bundle'
很少有作者提到使用className属性而不是class,但在我的例子中,两者都像下面这样工作。但是如果你使用class并在浏览器的开发工具中查看控制台,你会看到使用class的错误。所以改用className。
<div className="App" class = "container"> //dont use class attribute
不要忘记删除默认的CSS导入,以避免与引导程序冲突。
希望能有所帮助,编码愉快!!
引导5(更新2021年)
Bootstrap 5是模块化的,不再需要jQuery。因此,您可以导入Bootstrap组件并直接从Bootstrap引用它们。这意味着你不再需要像react-bootstrap或reactstrap这样的第三方库。
使用React + Bootstrap 5:
1_安装bootstrap并将其添加到package.json…
npm install 'bootstrap' --save
2_导入bootstrap和/或特定组件…
import { Collapse, Popover, Toast, Tooltip, Alert, Modal, Dropdown } from bootstrap
3_使用Bootstrap组件。例如,这里是下拉菜单…
// component
const DropdownDemo = () => {
const ddRef = useRef()
useEffect(() => {
var dd = new Dropdown(ddRef.current, {})
})
return (
<div className="py-2">
<div className="dropdown">
<button className="btn btn-secondary dropdown-toggle" type="button" ref={ddRef} aria-expanded="false">
Dropdown button
</button>
<ul className="dropdown-menu" aria-labelledby="dropdown1">
<li><a className="dropdown-item" href="#">Action</a></li>
<li><a className="dropdown-item" href="#">Another action</a></li>
<li><a className="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
</div>
)
}
// React app
function App() {
const [mounted, setMounted] = useState(true);
return (
<div>
{mounted &&
<div>
<DropdownDemo />
</div>
}
</div>
)
}