¿Cómo obtengo el siguiente código usando Next.js ?
Creo que hay un problema con Next.js que no puede acceder al objeto de la ventana a menos que esté dentro de un useEffect(() => {}) .
Cambiando a React regular, este código funcionó bien.
¿Qué me estoy perdiendo en el ecosistema Next.js que no permite que funcione este tipo de procesamiento retrasado?
Gracias.
import React from "react"; import ReactDOM from "react-dom"; import App from "./App"; import reportWebVitals from "./reportWebVitals"; import { initializeContract } from "./utils/near"; window.nearInitPromise = initializeContract() .then(() => { ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById("root") ); }) .catch(console.error); reportWebVitals();Actualización: aquí está mi intento con Next.js
import { useEffect } from "react"; import { initializeContract } from "../utils/near"; function MyApp({ Component, pageProps }) { useEffect(() => { window.nearInitPromise = initializeContract().then(() => renderApp()); }, []); const renderApp = () => { return <Component {...pageProps} />; }; } export default MyApp;Esto se debe a que el objeto de la ventana no está disponible en el lado del servidor (nodejs), cuando lo usa dentro de useHook, se ejecuta en el lado del cliente. (cuando el componente está montado).
Entonces, si ejecuta su código dentro de un useEfect, esto garantiza que su código solo se ejecute en el lado del cliente.