使用 React 和 Next.js 的 Ukit 图标

edk*_*dko 1 uikit reactjs next.js

无法让 uikit 图标出现在我的 next.js React 应用程序中。

我已将链接添加到 _app.js 中的 Head。我尝试过链接到node_modules(这是我保留的css和js文件)以及直接链接到CDN。目前除了图标之外一切都正常。

<Head>
    {/**  UIkit */}
    <link rel="stylesheet" href="/uikit/dist/css/uikit.min.css" />
    <script src="/uikit/dist/js/uikit.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/uikit@3.4.6/dist/js/uikit-icons.min.js"></script>
</Head>
Run Code Online (Sandbox Code Playgroud)

直接链接时也没有什么区别。

import '../node_modules/uikit/dist/js/uikit-icons.js';
Run Code Online (Sandbox Code Playgroud)

我也尝试过 Webpack 方法,有人说它解决了问题。然而它对我没有任何改变。

import UIkit from 'uikit';
import Icons from 'uikit/dist/js/uikit-icons';

// loads the Icon plugin
UIkit.use(Icons);
Run Code Online (Sandbox Code Playgroud)

我觉得可能是 Next.js 导致了这个问题。有没有人有过完成这项工作的经验?非常感谢任何提示。

Ph0*_*n1x 5

我遇到了类似的问题,但我已经成功地将 UIKit 集成到 NextJs 中。首先我创建了一个 UIKit 组件:

import React, { Component } from "react";

class UIKit extends Component {
  state = { ready: false };
  componentDidMount = () => {
    if (typeof window !== "undefined") {
      const uikit = require("uikit");
      const icons = require("uikit/dist/js/uikit-icons.min");
      uikit.use(icons);
      this.setState({ ready: true });
    }
  };

  render() {
    return <div>{this.props.children}</div>;
  }
}

export default UIKit;

Run Code Online (Sandbox Code Playgroud)

然后我定义了我的自定义_app.tsx

import React from "react";
import Head from "next/head";
import { AppProps } from "next/app";

import Navbar from "../components/navbar/navbar";
import UIKit from "../components/uikit";

// Global scss
import "../styles/uikit.scss";
import "../styles/global.scss";

export default function App({ Component, pageProps }: AppProps) {
  return (
    <div>
      <Head>
        <title>Strapi bloggg</title>
        <meta name="viewport" content="initial-scale=1.0, width=device-width" />
        <link
          rel="stylesheet"
          href="https://fonts.googleapis.com/css?family=Staatliches"
        />
      </Head>
      <UIKit>
        <Navbar />
        <Component {...pageProps} />
      </UIKit>
    </div>
  );
}

Run Code Online (Sandbox Code Playgroud)

正如您所看到的,该UIKit组件将包裹每个页面上的所有内容。

最后,我制作了一个uikit.scss覆盖默认主题的一些变量的项目。这是导入为import "../styles/uikit.scss";

让我知道它是否有效。