Javascript 如何筛选数组并返回正确的属性?
我的React组件中有一个render方法。我想根据道具的值显示一个特定的URL。因此,我创建了一个与我的prop-value选项对应的对象数组,以及每个选项的URLJavascript 如何筛选数组并返回正确的属性?,javascript,reactjs,typescript,filter,Javascript,Reactjs,Typescript,Filter,我的React组件中有一个render方法。我想根据道具的值显示一个特定的URL。因此,我创建了一个与我的prop-value选项对应的对象数组,以及每个选项的URL const SecurityModeOptions: any[] = [ { securityMode: 'mode1', url: 'https://docs.mode1' }, { securityMode: 'mode2', url: 'https://docs.mode2' }, { securityMode:
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>
);
};
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
);
返回(
);
};
所以,我做了这个过滤函数,我在moreUrl
prop中调用它。问题是在接下来的几天里,我没有办法测试这个功能是否有效。所以,我在想,如果你能看一看,告诉我它是否有问题
我感觉到我做了一些古怪的事情,但我没有犯任何错误,我也不确定我做得是否正确。这将是一个巨大的帮助
预期行为:
如果
securityMode选项中的securityMode
与this.props.securityMode
匹配,则会在moreUrl属性中看到相应的URL。这有几个问题GetSecurityModelUrl
将解析为数组,而不是函数。因此,如果在子级中调用,行moreUrl={getSecurityModelUrl()}
将导致错误
如果希望getSecurityModeURL
解析为单个对象,则需要使用。查找,而不是。筛选。所以最终会看起来像:
const getSecurityModeURL = SecurityModeOptions.find(
x => x.SecurityMode === securityMode
);
然后把它传给孩子
moreUrl={getSecurityModeURL.url | |'''}
就测试而言,看起来您有样本数据,为什么不能使用它进行测试?其他一切看起来都很好。GetSecurityModelURL
真的是一个函数吗?输入不同的securityMode
并检查是否可以在NoResource
组件中呈现当前url打开开发工具控制台启动…应该会看到错误。这是你的第一条线索如果我能做到,我会的。在接下来的几天里,我无法检查这个功能,而且我还是一个初级开发人员,所以不太确定,这是否有效。因此问题就来了。你可以轻松地打开任何沙箱站点,在react之外测试你的过滤器,看看它会返回什么。所显示的内容将抛出错误您仍然可以模拟它。你有一系列的模式,你知道你会得到securityMode
,因为道具试图呈现一些简单的东西,只是为了检查你没有得到错误和正确的url,你需要filter()
没有正确使用。我无法测试它,因为道具不在那里,我无法模拟它。当前仅存在默认值。剩下的功能将在未来几天内推出,但我不想等到出现问题的时候再推出。嗯,所以我犯了不少错误。应该知道筛选器将返回一个数组。。需要记住…给道具一个值,然后测试它?我看不出有什么问题。