我想要创建一个电子商务平台,它需要在服务器上呈现页面(在服务器上计算初始状态),但是使用react或vue组件进行过滤,这些组件通过使用api调用获取过滤后的数据来改变初始状态。
您知道任何支持在一个路由/页面中合并服务器和客户端呈现的javascript框架吗?
发布于 2022-04-13 10:42:15
下一个JS可以实现这一点。它支持服务器端和客户端的呈现。
下面是一个将两者结合在一起的示例:
import { useState } from 'react'
import { useRouter } from 'next/router'
function EventList({ eventList }) {
const [events, setEvents] = useState(eventList)
const router = useRouter()
const fetchSportsEvents = async () => {
const response = await fetch('http://localhost:4000/events?category=sports')
const data = await response.json()
setEvents(data)
router.push('/events?category=sports', undefined, { shallow: true })
}
return (
<>
<button onClick={fetchSportsEvents}>Sports Events</button>
<h1>List of events</h1>
{events.map(event => {
return (
<div key={event.id}>
<h2>
{event.id} {event.title} {event.date} | {event.category}
</h2>
<p>{event.description}</p>
<hr />
</div>
)
})}
</>
)
}
export default EventList
export async function getServerSideProps(context) {
const { query } = context
const { category } = query
const queryString = category ? 'category=sports' : ''
const response = await fetch(`http://localhost:4000/events?${queryString}`)
const data = await response.json()
return {
props: {
eventList: data
}
}
}
https://stackoverflow.com/questions/71855761
复制相似问题