reactjs - ReactJS:将简单的对象道具传递给组件
问题描述
我是新手,我的简单演示存在两个问题:首先,我似乎无法将对象道具传递给组件(因此{obj.testKey}
应该以其他方式呈现);其次,尽管它的使用方式与道具{info}
完全相同,但我似乎无法获得渲染。title
我怎样才能得到{obj.testKey}
和{info}
渲染?我假设我遗漏了一些非常明显的东西,因为这看起来很基本。
这是演示组件:
import React from "react";
const TestComponent = ({ title }, { info }, { obj }) => {
return (
<div>
<p>test paragraph from component</p>
<h2>{title}</h2>
<div>
efer {info} {obj.testKey}
</div>
{console.log("info", info)}
</div>
);
};
export default TestComponent;
和主应用程序:
import React from "react";
import TestComponent from "./test-component";
const DemoComponent = () => {
return <p>hello!</p>;
};
const App = () => {
return (
<div>
<p>test</p>
<DemoComponent />
<TestComponent
title="title test"
info="info test"
obj={ "testKey": "value" }
/>
</div>
);
};
export default App;
为了方便起见,还有一个stackblitz演示。
另外,为什么我必须解构道具{ title }, { info }, { obj }
?这感觉像是一种次优的方式。
感谢您在这里的任何帮助。
解决方案
第一个问题是由于不正确的解构。正确的方法看起来像
const TestComponent = ({ title, info, obj }) => {
...
}
第二个是因为你必须将一个对象作为参数传递两个{}
这样的{{testKey: "value"}}
<TestComponent
title="title test"
info="info test"
obj={{ testKey: "value" }}
/>
推荐阅读
- php - 如何在 PHP 中解密由 SQL Server 的 EncryptByPassPhrase() 加密的字符串?
- winapi - 使用 IMetaDataEmit::Save(/ToMemory/ToStream) 创建 PE 文件
- dialogflow-es - 仅当用户来自 Google 审核团队时接收错误的 Contextname(使我的应用程序崩溃)
- azure - 有没有办法将 IIS 日志从 Log Analytics 工作区馈送到 App Insights?
- javascript - Window.locatin 防止数据被删除
- c# - 如何从 GridFS 检索图像列表?
- c# - 如何在 kubernetes 客户端中使用 Watcher?
- typescript - 根据 ID 显示其他 JSON 对象
- html - 背景图像在缩放时覆盖标题
- ios - 在苹果钱包中添加多重通行证