将嵌套对象作为 React.Component 道具传递
Passing a Nested Object as React.Component Props
我确定之前有人问过这个问题,但我找不到了。我试图将嵌套对象作为道具传递给 React.Component class 但我一直收到此错误:
react-dom.development.js:13231 Uncaught Error: Objects are not valid as a React child (found: object with keys {props, context, refs, updater}). If you meant to render a collection of children, use an array instead.
我有一个这样创建的 App.tsx 文件:
import React from "react";
export type Child = {
id: number
}
export type Parent = {
id: number,
child: Child
}
export class Card extends React.Component<Parent> {
render() {
return <div>
Parent ID: {this.props.id}
Child ID: {this.props.child.id}
</div>;
}
}
function App() {
const data: any = {
"id": 1,
"child": {
"id": 2
}
}
const card: Card = new Card(data);
return (
<div className="app">
{card}
</div>
);
}
export default App;
这种事不可能吗?似乎应该如此,但也许我遗漏了一些东西。有没有办法让这样的东西工作或我没有使用的正确模式?谢谢!
我很确定你必须改变这个才能工作
<div className="app">
{card}
</div>
收件人:
<div className="app">
<card />
</div>
但是,就像 Jack 在评论中所说的那样,您无论如何都不应该像这样实例化 React 组件。而不是做:
const card: Card = new Card(data);
你应该这样做:
<div className="app">
<Card {...data} />
</div>
没有“一个”正确的方法可以将对象向下传递给子组件,有多种方法,其中之一如下(使用您的示例):
import React from "react";
export type Child = {
id: number
}
export type Parent = {
id: number,
child: Child
}
export class Card extends React.Component<Parent> {
render() {
return <div>
Parent ID: {this.props.id}
Child ID: {this.props.child.id}
</div>;
}
}
function App() {
const data: any = {
"id": 1,
"child": {
"id": 2
}
}
return (
<div className="app">
<Card {...data} />
</div>
);
}
export default App;
我确定之前有人问过这个问题,但我找不到了。我试图将嵌套对象作为道具传递给 React.Component class 但我一直收到此错误:
react-dom.development.js:13231 Uncaught Error: Objects are not valid as a React child (found: object with keys {props, context, refs, updater}). If you meant to render a collection of children, use an array instead.
我有一个这样创建的 App.tsx 文件:
import React from "react";
export type Child = {
id: number
}
export type Parent = {
id: number,
child: Child
}
export class Card extends React.Component<Parent> {
render() {
return <div>
Parent ID: {this.props.id}
Child ID: {this.props.child.id}
</div>;
}
}
function App() {
const data: any = {
"id": 1,
"child": {
"id": 2
}
}
const card: Card = new Card(data);
return (
<div className="app">
{card}
</div>
);
}
export default App;
这种事不可能吗?似乎应该如此,但也许我遗漏了一些东西。有没有办法让这样的东西工作或我没有使用的正确模式?谢谢!
我很确定你必须改变这个才能工作
<div className="app">
{card}
</div>
收件人:
<div className="app">
<card />
</div>
但是,就像 Jack 在评论中所说的那样,您无论如何都不应该像这样实例化 React 组件。而不是做:
const card: Card = new Card(data);
你应该这样做:
<div className="app">
<Card {...data} />
</div>
没有“一个”正确的方法可以将对象向下传递给子组件,有多种方法,其中之一如下(使用您的示例):
import React from "react";
export type Child = {
id: number
}
export type Parent = {
id: number,
child: Child
}
export class Card extends React.Component<Parent> {
render() {
return <div>
Parent ID: {this.props.id}
Child ID: {this.props.child.id}
</div>;
}
}
function App() {
const data: any = {
"id": 1,
"child": {
"id": 2
}
}
return (
<div className="app">
<Card {...data} />
</div>
);
}
export default App;