Passing extra props to children in NextJS/React

Feel free to correct me at any point here. I am a firmware developer turned hobby web developer. For context I am using React/NextJS.

I am making a website for a small event. Using SSR I wanted to pull a bit of event data from the database (like date, event name, etc) and provide this to components. Originally I thought to use React’s context mechanism to prevent prop drilling, but I found this does not seem to work well with SSR and appears to mostly (?) be a CSR feature (some dead references to createServerContext were found).

Unless I am interpreting this incorrectly, NextJS’s comment on context in SSR is basically ‘use CSR’. Their suggestion was to just wrap the context providers with ‘use client’, which effectively means the entire site is now CSR, right?

So from here I thought I might just pass the event information directly to the children. One level deep, two components (the site is simple). But in order to do that with NextJS’s layouts it seemed like I had to make use of a combination of React.Children.map and React.cloneElement. I found a number of sources online claiming this to work:

export default async function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {

  const info = (await getEventInfo())

  return (
    <html lang="en">
      <body className={font.className}>
        {Children.map(children, (child) => {
          return cloneElement(child as any, { info }) //TS issue with child here?
        })}
      </body>
    </html>
  );
}

None of the references were specifically using the pattern from within a NextJS layout. Although from what I know it seems like it ought to work just the same.

In these child pages I printed the value of the generic props object and it’s just { params: {}, searchParams: {} }. It does work to render the child element. It does not work to add extra props.

Am I doing something wrong here? Is this meant to work? Can it be done some other way? Open to critiques and other options.

PS: the TypeScript compiler was complaining about the type of child as given to cloneElement. Perhaps this is (one of) the issue(s)? Although it does render the child properly (without the prop addition) so maybe not.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật