基于next / examples github页面上的官方示例,我正在使用更少的antd设置nextjs。单击指向页面的链接时,未加载使用antd组件的nextjs页面。其他没有antd组件的页面成功加载。
下面是我用来设置少ant-design-less的代码。我怀疑代码中是否存在语法错误,因为我只是从next的官方示例网站复制而来
我的完整代码link,以备您查看
有人遇到过这种行为并设法解决了吗?谢谢
.babelrc
{
"presets": ["next/babel"],
"plugins": [
[
"import",
{
"libraryName": "antd",
"style": true
}
]
]
}
next.config.js
/* eslint-disable */
const withLess = require("@zeit/next-less");
const lessToJS = require("less-vars-to-js");
const fs = require("fs");
const path = require("path");
// Where your antd-custom.less file lives
const themeVariables = lessToJS(
fs.readFileSync(path.resolve(__dirname, "./assets/antd-custom.less"), "utf8")
);
// fix: prevents error when .less files are required by node
if (typeof require !== "undefined") {
require.extensions[".less"] = file => {};
}
module.exports = withLess({
lessLoaderOptions: {
javascriptEnabled: true,
modifyVars: themeVariables // make your antd custom effective
}
});
antd-custom.less
@primary-color: #52c41a;
@layout-header-height: 40px;
@border-radius-base: 2px;
signin.jsx
import {
Form,
Select,
InputNumber,
DatePicker,
Switch,
Slider,
Button
} from "antd";
const FormItem = Form.Item;
const Option = Select.Option;
export default () => (
<div style={{ marginTop: 100 }}>
<Form layout="horizontal">
<FormItem
label="Input Number"
labelCol={{ span: 8 }}
wrapperCol={{ span: 8 }}
>
<InputNumber
size="large"
min={1}
max={10}
style={{ width: 100 }}
defaultValue={3}
name="inputNumber"
/>
<a href="#">Link</a>
</FormItem>
<FormItem label="Switch" labelCol={{ span: 8 }} wrapperCol={{ span: 8 }}>
<Switch defaultChecked name="switch" />
</FormItem>
<FormItem label="Slider" labelCol={{ span: 8 }} wrapperCol={{ span: 8 }}>
<Slider defaultValue={70} />
</FormItem>
<FormItem label="Select" labelCol={{ span: 8 }} wrapperCol={{ span: 8 }}>
<Select
size="large"
defaultValue="lucy"
style={{ width: 192 }}
name="select"
>
<Option value="jack">jack</Option>
<Option value="lucy">lucy</Option>
<Option value="disabled" disabled>
disabled
</Option>
<Option value="yiminghe">yiminghe</Option>
</Select>
</FormItem>
<FormItem
label="DatePicker"
labelCol={{ span: 8 }}
wrapperCol={{ span: 8 }}
>
<DatePicker name="startDate" />
</FormItem>
<FormItem style={{ marginTop: 48 }} wrapperCol={{ span: 8, offset: 8 }}>
<Button size="large" type="primary" htmlType="submit">
OK
</Button>
<Button size="large" style={{ marginLeft: 8 }}>
Cancel
</Button>
</FormItem>
</Form>
</div>
);
答案 0 :(得分:0)
next.js和antd一起工作的最简单解决方案是使用以下代码在_app.js
文件夹上创建pages
:
import 'antd/dist/antd.css';
export default function App({ Component, pageProps }) {
return <Component {...pageProps} />
}
无需其他调整。