如何在 React 中使用 Materialize CSS 的 sideNav?

2023-12-09

我正在使用 React 开发一个应用程序,我想使用 sidenav 组件http://materializecss.com/side-nav.html

问题是我收到此错误:

Sidebar.js:8 Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_2_jquery___default(...)(...).sideNav is not a function
    at HTMLDocument.<anonymous> (Sidebar.js:8)
    at mightThrow (jquery.js:3534)
    at process (jquery.js:3602)

我对导入组件、库的方式很困惑。它们有很多,配置方法也有很多。

我所做的是:

  1. 创建应用程序

    创建反应应用程序

  2. 通过 npm 安装 Materialise

    npm 安装 Materialize-css@next

  3. 创建反应应用程序

这是我正在使用的代码:

索引.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="%PUBLIC_URL%/favicon.ico">

    <title>React App</title>
  </head>
  <body>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <div id="root"></div>

    <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script type="text/babel" src="js/materialize.min.js"></script>
  </body>
</html>

App.js

import React from 'react'
import {BrowserRouter, Route} from 'react-router-dom';
import Sidebar from './Sidebar'

const Dashboard = () => <h2>Dashboard</h2>
const Survey = () => <h2>Survey</h2>
const Landing = () => <h2>Landing</h2>
const Home = () => <h2>Home</h2>

const App = () => {
    return (
            <div>
                <BrowserRouter>
                    <div>
                        <Sidebar />
                        <Route exact path="/" component={Home} />
                        <Route path="/surveys" component={Dashboard} />
                    </div>
                </BrowserRouter>
                Hi There!
            </div>
        )
}

export default App;

侧边栏.js

import React, {Component} from 'react';
import 'materialize-css/dist/css/materialize.min.css';
import $ from 'jquery';

class Sidebar extends Component {
    componentDidMount() {
        $(document).ready(function(){
            $('.sidenav').sideNav();
        });
    }

    render() {
        return (
            <ul id="slide-out" className="sidenav"> 
                <li><a href="#!"><i className="material-icons">cloud</i>First Link With Icon</a></li>
                <li><a href="#!">Second Link</a></li>
            </ul>
        );
    }
}

export default Sidebar;

包.json

{
  "name": "support-tools",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "jquery": "^3.3.1",
    "materialize-css": "^1.0.0-alpha.4",
    "nodemon": "^1.15.1",
    "react": "^16.2.0",
    "react-bootstrap": "^0.32.1",
    "react-bootstrap-sidebar": "0.0.1",
    "react-burger-menu": "^2.2.3",
    "react-dom": "^16.2.0",
    "react-materialize": "^1.1.2",
    "react-mdl": "^1.11.0",
    "react-redux": "^5.0.7",
    "react-router-dom": "^4.2.2",
    "react-scripts": "1.1.1",
    "react-sidebar": "^2.3.2",
    "react-sidenav": "^2.1.2",
    "redux": "^3.7.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

我尝试在index.js上使用两个版本的jQuery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

and

<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

但我可以让 sidenav 运行。我能做什么?


经过多次尝试,我终于运行了使用 React 运行的 SideNav:

包.json

{
  "name": "sidebar",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "jquery": "^3.3.1",
    "material-design-icons": "^3.0.1",
    "materialize-css": "^1.0.0-alpha.4",
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-mdl": "^1.11.0",
    "react-scripts": "1.1.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

索引.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="%PUBLIC_URL%/favicon.ico">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
      rel="stylesheet">
    <title>React App</title>

    <style type="text/css">
      select{
        display: block !Important;
      }
    </style>
  </head>
  <body>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <div id="root"></div>

    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
  </body>
</html>

App.js

import React from 'react'
import {BrowserRouter, Route} from 'react-router-dom';
import Sidebar from './Sidebar'

const Dashboard = () => <h2>Dashboard</h2>
const Survey = () => <h2>Survey</h2>
const Landing = () => <h2>Landing</h2>
const Home = () => <h2>Home</h2>

const App = () => {
    return (
            <div>
                <BrowserRouter>
                    <div>
                        <Sidebar />
                        <Route exact path="/" component={Home} />
                        <Route path="/surveys" component={Dashboard} />
                    </div>
                </BrowserRouter>
                Hi There!
            </div>
        )
}

export default App;

侧边栏.js

import React, { Component } from "react";
import M from "materialize-css/dist/js/materialize.min.js";
import { BrowserRouter, Route } from "react-router-dom";
import "materialize-css/dist/css/materialize.min.css";

class Sidebar extends Component {
    componentDidMount() {
        var elem = document.querySelector(".sidenav");
        var instance = M.Sidenav.init(elem, {
            edge: "left",
            inDuration: 250
        });
    }

    render() {
        return (
            <div>
                <ul id="slide-out" className="sidenav">
                    <li />
                    <li>
                        <a href="#!">
                            <i className="material-icons">cloud</i>First Link
                            With Icon
                        </a>
                    </li>
                    <li>
                        <a href="#!">Second Link</a>
                    </li>
                    <li>
                        <div className="divider" />
                    </li>
                    <li>
                        <a className="subheader">Subheader</a>
                    </li>
                    <li>
                        <a className="waves-effect" href="#!">
                            Third Link With Waves
                        </a>
                    </li>
                </ul>
                <a href="#" data-target="slide-out" className="sidenav-trigger">
                    <i className="material-icons">menu</i>
                </a>
            </div>
        );
    }
}

export default Sidebar;

您也可以从这里查看该项目:

https://github.com/AndyBraveMX/react-learning/tree/master/react-sidenav-materializecss

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 React 中使用 Materialize CSS 的 sideNav? 的相关文章

随机推荐

  • Python:更改嵌套列表的值

    因此 我使用嵌套列表来存储一些数据 但在更改其中一个子列表的特定值时遇到了问题 if attributes 3 W self board 3 3 W 数字是我用来测试的占位符 board 是一个类变量 创建如下 我正在尝试创建用户指定的网格
  • 标点符号后的第一个字母大写

    比如我有这样一句话 hello my name is Jess what is your name 我想把它改成 Hello My name is Jess What is your name 我想出了这段代码 但在将所有内容重新连接在一起
  • 行驶距离区域

    有没有办法通过 Google Maps API 确定给定中心点的给定驾驶时间内的边界多边形 如果做不到这一点 有没有一种方法可以计算驾驶时间函数的倒数 也就是说 不是 从 A 点到 B 点需要多少分钟 而是询问 我会走多远 在一定的分钟内从
  • 将以 2 为基数的二进制数字字符串转换为 int

    我只是想将一个以 2 为基数的二进制数字字符串转换为 int 如下所示 gt gt gt 11111111 fromBinaryToInt 255 有没有办法在Python中做到这一点 您使用内置的int 函数 并将输入数字的基数传递给它
  • Eclipse 崩溃“java 已启动但返回退出代码 = -805306369”

    我知道有一个相同的帖子here但是所提出的解决方案都没有改变任何东西 而且它们已经很老了 与 Java6 相关的问题 并且似乎指的是与 Eclipse 相关的错误 我的问题是当我在开发时面向 RCP 和 RAP 开发人员的 Eclipse
  • 如何使用正则表达式只替换括号内的内容?

    如何使用正则表达式只替换括号内的内容 String This is my string 123 我想用 456 代替 123 Desired String This is my string 456 我的尝试 regex re sub re
  • 从 PowerShell 的列表中选择一个项目

    我正在使用 PowerShell 进行 api 调用 我得到 3 个输出作为调用结果 ID 1 Name Abc Location London 我想将 ID 传递给一个新变量 我怎样才能在powershell中实现这一点 谢谢 您可以使用
  • 使用 SwiftUI ForEach 从 NSOrderedSet 获取字符串值

    Using 这个问题 答案我可以使用 ForEach 来使用从 CoreData 中的一对多关系创建的 NSOrderedSet 但是我似乎无法访问存储在 Core Data 实体中的字符串属性 我有两个 CoreData 实体 客户端和会
  • Swift 中根据属性删除数组对象

    我有一个像这样的自定义数组 我想删除学生 ID 为 4 的元素 var strNames Student id 1 name ghj Student id 4 name def Student id 9 name bkl 以经典的方式 我确
  • JSON 数据 - 已解析或“评估”

    从安全角度来看 我认为简单地对传入的 JSON 数据进行 评估 是一个严重错误 如果你得到像下面这样的数据 你就会遇到一些问题 someData function alert i m in ur code hackin ur page 我想
  • 多次具有相同键的红黑树:将集合存储在节点中还是将它们存储为多个节点?

    显然你可以做任何一个 但前者更常见 您为什么选择后者 它是如何运作的 我读到了这个 http www drdobbs com cpp stls red black trees 184410531 这让我觉得他们做到了 它说 insert a
  • R 将每日数据与刻度数据合并

    感谢您指向 na locf Darren 更新的示例和结果如下 我有报价数据 我已将其汇总到每日数据中 以便计算每日波动性 现在我已经创建了每日波动率 我想再次将每日数据与报价数据合并 但是 我怀疑由于每日数据和分时数据的索引差异 合并仍然
  • numpy读取带有复数的.csv

    堆栈溢出 我有一个包含复数的矩阵 例如 2 2982235934153075E 11 2 1179547211742553E 9i 我需要将其导入到numpy数组中 我一直在使用genfromtext file 解析我所有其他的真实值 但我
  • 发生了错误。请联系您的系统管理员。 (6632) Jasper 服务器 6.2 中出现错误

    我正在使用 Jasper 报告 TIBCO Jaspersoft Studio 6 2 0 final Jasper 服务器 JasperReports Server 社区版 v6 2 0 我将报告书模板 Jasper 报告发布到 Jasp
  • 将 CURL 转换为 URLRequest

    我正在尝试将 Swagger 给我的以下卷曲请求转换为 URLRequest curl X GET header Accept application json header Authorization key ttn account v2
  • 从系统帐户为用户创建 ServiceAccountCredential

    我使用以下代码通过系统登录 域范围内的身份验证 代表用户进行操作 我发现实现此目的的唯一示例使用反射来设置用户 我知道这不是完成此任务的正确方法 所以我想知道是否有人可以帮助我举一个如何解决此问题的示例 ServiceAccountCred
  • 如何在 Python 中的类之间创建共享类属性

    我昨天问过这个问题 但我把我的问题写得太糟糕了 当我意识到我输入的内容时 所有回复都是针对我没有的另一个措辞错误的问题的解决方案 抱歉上次的愚蠢输入 我有两个类 我希望它们能够共享一个公共列表 而不必将其作为参数传递 我还想创建一个方法来打
  • 在 Angular.js 中的控制器之间共享资源

    简单的问题 我有这个资源 var Company resource company id id id 我想在不同的控制器之间共享 现在 我正在复制粘贴内容 但我仍然没有达到我想要添加更多代码并使用的程度角度共享服务 还有其他选择吗 只需放入
  • 在 Python 中获取从周日开始的周数时出现问题?

    我正在使用 Python 3 6 并且在获取从周日开始的周数时遇到问题 如何在 Python 中找到从周日开始的周数 t1 datetime datetime now t1 strftime U 例如 关于09 16 2018 Sunday
  • 如何在 React 中使用 Materialize CSS 的 sideNav?

    我正在使用 React 开发一个应用程序 我想使用 sidenav 组件http materializecss com side nav html 问题是我收到此错误 Sidebar js 8 Uncaught TypeError WEBP