gpt4 book ai didi

javascript - 为什么放置 div 标签可以让此 React 代码编译?

转载 作者:行者123 更新时间:2023-12-02 21:21:18 26 4
gpt4 key购买 nike

我自己找到了问题的解决方案,但我很困惑为什么它有效,并且想了解更多信息。

我的以下代码存在运行时错误:

class ExampleClass extends React.Component {
render() {
const foo = [1, 2, 3]
const jsx = foo.map((num) =>
<span key={num}>
{num}
</span>
);

return(
{jsx}
)
}
}

对此,我得到“错误:对象作为 React 子项无效(发现:带有键 {jsx} 的对象)。如果您打算渲染子项集合,请改用数组。”

但是,如果我这样做:

class ExampleClass extends React.Component {
render() {
const foo = [1, 2, 3]
const jsx = foo.map((num) =>
<span key={num}>
{num}
</span>
);

return(
<div>
{jsx}
</div>
)
}
}

它有效,输出 123在页面上。为什么我需要 <div>标签?不是 jsx变量是否有将其插入 html 所需的标签?

最佳答案

那是因为你实际上返回了一个对象

考虑一下:

class ExampleClass extends React.Component {
render() {
const foo = [1, 2, 3]

const jsx = foo.map((num) =>
<span key={num}>
{num}
</span>
);

return ({jsx})
}
}

您返回的对象只有一个名为 jsx 的键,变量值为 jsx之前声明过。

每个 JSX 都应该在其最外层包装器处返回:

  1. 一对标签:

const Component = () => {
return (
<div>
...JSX
</div>
)
}

  • 一个React.Fragment :
  • const Component = () => {
    return (
    <>
    ...JSX
    </>
    )
    }

  • 组件:
  • const Component = () => {
    return (
    <ReturnedComponent />
    )
    }

    关于javascript - 为什么放置 div 标签可以让此 React 代码编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60836571/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com