1

问题背景

今天想试着用React的next.js服务端框架来写页面玩,本能的掏出了老朋友antd来试试水,结果搞了半天都没用上,最后终于找到了解决方法.开文记录一下.

解决方法

基于已经安装了next和antd,并且已经使用create-next-app脚手架命令创建了next应用.

  1. 使用命令安装如下插件
yarn add @zeit/next-css @zeit/next-less @zeit/next-sass babel-plugin-import less

2.安装完毕后在next的项目下新建一个next.config.js文件修改打包配置.(当前使用版本为next10,默认没有该文件因此自己新建一个),新建完毕后添加如下代码

const withCSS = require('@zeit/next-css')
const withLess = require('@zeit/next-less')
const withSass = require("@zeit/next-sass");

module.exports = withCSS({
  cssModules: true,
  cssLoaderOptions: {
    importLoaders: 1,
    localIdentName: "[local]___[hash:base64:5]",
  },
  ...withLess(
    withSass({
      lessLoaderOptions: {
        javascriptEnabled: true,
      },
    })
  ),
});

3.styles文件夹下新建一个antd.less文件,(或者css也可以),把antd组件库对应的css文件导入. 我的如下

@import "../node_modules/antd/dist/antd.css";

4.在pages文件夹下的_app.js文件中导入样式,即添加如下代码.此时antd的样式应该就可以被全局使用了

_app.js

import '../styles/antd.less'

5.组件中尝试添加一个Button,启动服务试试看成没成功.

import Head from 'next/head'
import styles from '../styles/Home.module.css'

import { Button } from 'antd';

export default function Home() {
  return (
    <div className={styles.container}>
    <Head>
      <title>首页</title>
    </Head>
        <h2>abc</h2>
        // 这里试下button
        <Button type="primary">Primary Button</Button>
    </div>
  )
}

ok,问题解决.

解决方法原文地址,感谢作者:
https://dev.to/burhanuday/usi...


梦想全栈的小白羊
1 声望0 粉丝

Cool Thing, Right Thing, Sit Down And Go Coding!