首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过多个组件nextjs传递道具

通过多个组件nextjs传递道具
EN

Stack Overflow用户
提问于 2022-06-25 14:41:18
回答 1查看 342关注 0票数 1

我是Next.js新手,在组件间共享数据时遇到了问题。我有三个组成部分:

代码语言:javascript
复制
//index.js
function App() {
   const options = []
    for (let i = 1; i < 101; i++) {
        options.push({
            label: i,
            value: i
        })
    }
    return (
        <>
            <Form options={options}/>
        </>
    )
}
代码语言:javascript
复制
function Form({options}) {
    return(
        <form>
            <Select options={options}/>
        </form>
    )
}
代码语言:javascript
复制
function Select({options}) {
    options = options?.map(option => {
        return <option value={option.value}>{option.label}</option>
    })
    return (
        <select>
            {...options}
        <select/>
    )
}

这是代码的简化版本。

当我运行这段代码时,我得到了这个Error

x Spread children are not supported in React.

这是因为当我在map组件的select元素中运行以下代码时,选项变量没有使用Select函数进行更新:

代码语言:javascript
复制
{console.log(options)}

我得到一个对象数组,其对象如下所示:

代码语言:javascript
复制
{
    $$typeof: Symbol(react.element),
    key: "1",
    //etc....
}

当我在console.log()组件中运行这个Form时,我得到了在index.js文件中创建的数组。

我觉得这和Server-Side-Rendering in NextJS有关。

EN

回答 1

Stack Overflow用户

发布于 2022-06-25 14:53:37

尝试,这是因为您正在尝试执行一个映射选项数据并将其放入select标记中,这就是select无法识别您的扩展选项数据的原因,而您只需要在select标记中映射该选项数据。

代码语言:javascript
复制
function Select({options}) {
    return (
     <select>
       {options?.map((option) => {
           return <option value={option.value}> {option.label}</option>;
       })}
    </select>
  );

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72754783

复制
相关文章

相似问题

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