【发布时间】:2021-08-02 00:30:35
【问题描述】:
我有一个简单的名称-值对定义为接口NameValuePair。
interface NameValuePair {
[key: number]: string;
}
使用此接口,React.useEffect 正在初始化状态值,例如
const NameValuePairFC = () => {
const [nameValuePairs, setNameValuePairs] = React.useState<NameValuePair>();
React.useEffect(() => {
const tempNameValueMap: NameValuePair = {};
tempNameValueMap[0] = "Zero";
tempNameValueMap[1] = "One";
tempNameValueMap[2] = "Two";
setNameValuePairs(tempNameValueMap);
}, [nameValuePairs]);
return (
<div className="content">
Rendering name value pairs
{
Object.keys(nameValuePairs).map((key) => {
const nv = nameValuePairs[key];
console.log("name: " + key + "; value: " + nv[key]);
<div key={key}>
Key: {key} and value: {nv[key]}
</div>;
})
};
</div>
);
};
我看到控制台没有打印任何内容,也没有渲染任何片段。
我期望打印定义的 3 个名称值对 0: Zero, 1: One, 2: Two 并且不确定我做错了什么。
请告诉我。我已经把它放在我正在尝试做的codepen 中。
【问题讨论】:
-
发布此内容后,我对代码进行了一些改进,并且可以看到控制台正在遍历键:值对。
-
另外,考虑到你有
const nv = nameValuePairs[key];,那么nv[key]是无效的,因为你基本上是在尝试做"Zero"[0]。您应该直接从那里使用nv,因为它包含实际值。 -
没错@zhulien。我也更新了codepen。谢谢。
标签: reactjs typescript