[英]Window is not defined with NextJS when using Elastic UI
只是尝试从Elastic UI库中添加一个按钮,但在添加按钮时未定义 window 。 API 调用和其他一切工作正常,直到我添加按钮组件或在下面第 3 行添加导入。
在进行服务器端 api 调用时,有没有办法使用 Elastic UI 库?
这是主要代码:
import React from "react";
import "isomorphic-unfetch";
import { EuiButton } from "@elastic/eui";
export default class HomePage extends React.Component {
static async getInitialProps() {
let res = await fetch("https://api.randomuser.me/");
let randUser = await res.json();
console.log(randUser);
return { users: randUser };
}
render() {
return (
<div>
<h2>User info:</h2>
<ul>
{this.props.users.results.map((user, i) => {
return <li key={"user-" + i}>{user.gender}</li>;
})}
</ul>
<EuiButton href="http://www.elastic.co">Link to elastic.co</EuiButton>
</div>
);
}
}
不知道这是否是正确的解决方案,但我会探索下一个动态导入。
我设法让以前的代码在我身边工作,但不知道渲染按钮是否 100% 是你所期望的。
import React from "react";
import dynamic from 'next/dynamic'
import "isomorphic-unfetch";
export default class HomePage extends React.Component {
static async getInitialProps() {
let res = await fetch("https://api.randomuser.me/");
let randUser = await res.json();
console.log(randUser);
return { users: randUser };
}
render() {
// dynamic import of the button
const EuiButton = dynamic(() => import('@elastic/eui/').then(module => module.EuiButton))
return (
<div>
<h2>User info:</h2>
<ul>
{this.props.users.results.map((user, i) => {
return <li key={"user-" + i}>{user.gender}</li>;
})}
</ul>
{/*render it only if we're from client side*/}
{process.browser ? <EuiButton href="http://www.elastic.co">Link to elastic.co</EuiButton> : null }
</div>
);
}
}
希望这可以让您了解如何解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.