![](/img/trans.png)
[英]How can I filter through an array an return it instead of another one in this Svelte project?
[英]How i can filter through an Array and return the correct property?
我的React组件中有一个render方法。 我想显示一个特定的URL,具体取决于道具的价值。 所以,我创建了一个对应于我的prop值选项的Objects数组,以及每个对象的URL。
const SecurityModeOptions: any[] = [
{ securityMode: 'mode1', url: 'https://docs.mode1' },
{ securityMode: 'mode2', url: 'https://docs.mode2' },
{ securityMode: 'mode3', url: 'https://docs.mode3' }
];
renderBasicMode = () => {
const { securityMode } = this.props;
const getSecurityModeURL = SecurityModeOptions.filter(
url => SecurityModeOptions.SecurityMode === securityMode
);
return (
<div>
<NoResource
icon="user-o"
title="Security Mode"
moreUrl={getSecurityModeURL()}
/>
</div>
);
};
所以,我做了这个过滤器功能,我在moreUrl
prop中调用。 问题是我无法在接下来的几天内测试此功能是否有效。 所以,我在想,如果你能看一眼就告诉我它是否有问题。
我觉得我做了一些时髦的事,但我没有得到任何错误,我不确定,我做得对。 会是一个巨大的帮助。
预期行为:
如果SecurityModeOption
中的SecurityModeOption
与this.props.securityMode
匹配,则在moreUrl prop中看到相应的URL。
这有几个问题。 getSecurityModeURL
将解析为数组,而不是函数。 因此,如果在子项中调用,则moreUrl={getSecurityModeURL()}
行将最终导致错误。
如果您希望getSecurityModeURL
解析为单个对象,则需要使用.find
而不是.filter
。 所以最终看起来像:
const getSecurityModeURL = SecurityModeOptions.find(
x => x.SecurityMode === securityMode
);
然后将它传递给孩子
moreUrl={getSecurityModeURL.url || ''}
就测试而言,看起来你有样本数据,为什么不能用它进行测试? 其他一切看起来都不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.