【发布时间】:2019-11-05 08:53:59
【问题描述】:
我有以下 HTML 代码,我想将其集成到 react 中,但不知道该怎么做。
我认为这是一个基本错误。我什至可能都错了
我想在我的 react APP 中使用以下 HTML 的功能。它是一个很好的响应式菜单,带有一个扩展为移动菜单的汉堡栏
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<!--Import Google Icon Font-->
<link
href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet"
/>
<!-- Compiled and minified CSS -->
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"
/>
<title>GRID</title>
</head>
<body>
<nav class="nav-wrapper indigo">
<div class="container">
<a href="#" class="brand-logo">Site Title</a>
<a href="#" class="sidenav-trigger" data-target="mobile-links">
<i class="material-icons" onClick="displayMobileMenu">menu</i>
</a>
<ul class="right hide-on-med-and-down">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Login</a></li>
</ul>
</div>
</nav>
<ul class="sidenav" id="mobile-links">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Login</a></li>
</ul>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<!-- Compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script
$(document).ready(function(){
$('.sidenav').sidenav();
});></script>
</body>
</html>
以下是我尝试过的方法 我已经安装了依赖项
- jquery {npm i jquery}(我认为这可行,但不能用于其他任何事情,所以不确定)
- Materialize {npm i materialize}(这适用于网站的其余部分)
我的问题是我不确定是否应该使用 jquery 或使用 componentDidMount() 编写新的东西
下面是反应代码 codesanbox.io 在这里https://codesandbox.io/embed/wiki-mogpb?fontsize=14
import React from "react";
import { Link } from "react-router-dom";
import $ from "jquery";
const displayMobileMenu = () => {
return (
$('.sidenav').sidenav()
)
};
const Navbar = ({ title }) => {
return (
<div>
<nav className="nav-wrapper indigo">
<div className="container">
<a href="#" className="brand-logo">
React Wiki
</a>
<a href="#" className="sidenav-trigger" data-target="mobile-links">
<i
className="material-icons"
onClick={displayMobileMenu()}
>
menu
</i>
</a>
<ul className="right hide-on-med-and-down">
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/files">React Files</Link>
</li>
<li>
<Link to="/context">Contexts</Link>
</li>
<li>
<Link to="/questions">Questions</Link>
</li>
</ul>
</div>
</nav>
<ul className="sidenav" id="mobile-links">
<li>
<a href="#">Home</a>
</li>
<li>
<a href="#">About</a>
</li>
<li>
<a href="#">Contact</a>
</li>
<li>
<a href="#">Login</a>
</li>
</ul>
</div>
);
};
Navbar.defaultProps = {
title: " React Wiki"
};
export default Navbar;
【问题讨论】:
-
将 React 与 jQuery 混合使用通常是相反的。你真的应该找到一种与 React 兼容的方式来实现你所需要的
标签: javascript jquery css reactjs materialize