如何将 props 或 states 从父组件(子组件)传递给子组件(服务器组件)?

问题描述 投票:0回答:1

我有一个服务器 API 调用,需要用户的 IP 地址。为了跟踪用户,我使用第三方 api。

现在我主要面临的问题是,客户端代码无法在“查看页面源代码”选项卡上加载。为了解决这个问题,我计划进行另一个 api 调用,只是为了在服务器端加载数据。为此,我需要将 IP 地址从客户端传递到服务器。我从 nextjs 的 URL 文档中找到了解决方案:https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating#fetching-服务器上的数据与提取

但我不知道如何将道具传递给孩子们。

假设“ServerComponent”被名为“ClientComponent”的客户端组件包装

<ClientComponent>
      <ServerComponent />
    </ClientComponent>

还假设这是我的客户端组件,并且服务器组件按原样传递(客户端组件的){子组件}

'use client'

import { useState } from 'react'
 
export default function ClientComponent({
  children,
}: {
  children: React.ReactNode
}) {
  const [count, setCount] = useState(0)

  return (
    <>
      <button onClick={() => setCount(count + 1)}>{count}</button>
      {children}
    </>
  )
}

现在,我需要将一个 prop 或 state ip:{userIp} 从 ClientComponent 传递到 ServerComponent。

我找到了一种在客户端组件内使用服务器组件的 nextjs 13 方法。文档:https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating#fetching-data-on-the-server-with-fetch

但我不知道如何将道具传递给这个服务器组件

parameter-passing next.js13 server-side client-side viewpage
1个回答
-1
投票

您可以尝试这种方式将道具从父组件传递到子组件:

import { useState } from 'react';
import ServerComponent from './ServerComponent'; // Import the ServerComponent

export default function ClientComponent() {
  const [count, setCount] = useState(0);
  const userIp = '...'; // Replace this with the user's IP address

  return (
    <>
      <button onClick={() => setCount(count + 1)}>{count}</button>
      <ServerComponent userIp={userIp} /> // pass props and states here 
    </>
  );
}
© www.soinside.com 2019 - 2024. All rights reserved.