Now I'm building a webpage that shows a ranking of items. I'm fetching datas with an external javascript file and using it by putting tag in nextjs page. The script uses the window variable, so I couldn't make it API and execuse it on the serverside.
Now my page is like below.
<div>
<Script src="/weeklyRanking.js" />
</div>
In the js, I have items variable which is an array, and I want to use it in a page like below.
{items.map((item)=>(
<div>{item}<div>
))}
How can I pass the variable from script tag to page?
I tried below, weeklyRanking.js
let items = [item1,item2,item3];
window.items = items;
page.jsx
import Script from 'next/script'
const page = () => {
const [items, setItems] = useState([]);
}
useEffect(() => {
setItems(window.items)
}, [])
return (
<>
{items.map((item)=>(
<div key={item}>{item}</div>
))}
<Script src="/weeklyRanking.js" />
</>
)
}
export default page
The result is the items variable is undefined.
To pass the items variable from the external JavaScript file to your Next.js page, you can modify the script in weeklyRanking.js to set the items variable as a global variable. Here's how you can do it:
In weeklyRanking.js: javascript // Define the items variable as a global variable window.items = [item1, item2, item3];
// Rest of your code
In your Next.js page: jsx