首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >混合呈现(服务器+客户端)

混合呈现(服务器+客户端)
EN

Stack Overflow用户
提问于 2022-04-13 10:15:07
回答 1查看 201关注 0票数 0

我想要创建一个电子商务平台,它需要在服务器上呈现页面(在服务器上计算初始状态),但是使用react或vue组件进行过滤,这些组件通过使用api调用获取过滤后的数据来改变初始状态。

您知道任何支持在一个路由/页面中合并服务器和客户端呈现的javascript框架吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-13 10:42:15

下一个JS可以实现这一点。它支持服务器端和客户端的呈现。

下面是一个将两者结合在一起的示例:

代码语言:javascript
运行
复制
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
    }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71855761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档