Reactjs 如何在react中只给map的第一个结果提供道具?
我使用map从数组中列出组件。 我只需要给地图的第一个结果加上道具。 我怎么能做到?(仅为元素数组[0]提供一个属性)Reactjs 如何在react中只给map的第一个结果提供道具?,reactjs,dictionary,Reactjs,Dictionary,我使用map从数组中列出组件。 我只需要给地图的第一个结果加上道具。 我怎么能做到?(仅为元素数组[0]提供一个属性) if(dropdownpoptions&&Array.isArray(dropdownpoptions)){ 返回( {dropdownpoptions.map((选项)=>( this.optionSelected()} > {option.props.children} ))} ); } };您可以试试 if (dropDownOptions && A
if(dropdownpoptions&&Array.isArray(dropdownpoptions)){
返回(
{dropdownpoptions.map((选项)=>(
this.optionSelected()}
>
{option.props.children}
))}
);
}
};代码>您可以试试
if (dropDownOptions && Array.isArray(dropDownOptions)) {
return (
<ul className={styles.ul}>
{dropDownOptions.map((option, i)=> (
(i == 1) ? (
<DropDownItem
iconName={option.iconName}
value={option.value}
displayValue={option.displayValue ? true : false}
key={option.name}
onClick={e => this.optionSelected()}
/> )
:
(your-child-here)
))}
</ul>
);
}
};
if(dropdownpoptions&&Array.isArray(dropdownpoptions)){
返回(
{dropdownpoptions.map((选项,i)=>(
(i==1)(
this.optionSelected()}
/> )
:
(你的孩子在这里)
))}
);
}
};
if(dropdownpoptions&Array.isArray(dropdownpoptions)){
返回(
{dropdownpoptions.map((选项,索引)=>(
this.optionSelected()}
>
{option.props.children}
))}
);
}
}) 您可以使用filter
过滤第一个元素和所有其他元素,然后映射到它们上面
if (dropDownOptions && Array.isArray(dropDownOptions)) {
return (
<ul className={styles.ul}>
{/* first element */}
{dropDownOptions.filter((e, i) => i === 0).map((option, i) => (
<DropDownItem
iconName={option.iconName}
value={option.value}
displayValue={option.displayValue ? true : false}
key={option.name}
onClick={(e) => this.optionSelected()}
>
{option.props.children}
</DropDownItem>
))}
{/* all other elements */}
{dropDownOptions.filter((e, i) => i !== 0).map((option, i) => (
<DropDownItem>
{option.props.children}
</DropDownItem>
))}
</ul>
);
}
if(dropdownpoptions&&Array.isArray(dropdownpoptions)){
返回(
{/*第一个元素*/}
{dropdownpoptions.filter((e,i)=>i==0).map((option,i)=>(
this.optionSelected()}
>
{option.props.children}
))}
{/*所有其他元素*/}
{dropdownpoptions.filter((e,i)=>i!==0).map((option,i)=>(
{option.props.children}
))}
);
}
为什么要这样做?dropdownoptions中有什么?因为只有第一个子元素会对父组件的更改状态做出反应。传递给map函数的回调函数有第二个参数,即数组的当前索引。您必须确保索引为0,然后传递道具。
if (dropDownOptions && Array.isArray(dropDownOptions)) {
return (
<ul className={styles.ul}>
{/* first element */}
{dropDownOptions.filter((e, i) => i === 0).map((option, i) => (
<DropDownItem
iconName={option.iconName}
value={option.value}
displayValue={option.displayValue ? true : false}
key={option.name}
onClick={(e) => this.optionSelected()}
>
{option.props.children}
</DropDownItem>
))}
{/* all other elements */}
{dropDownOptions.filter((e, i) => i !== 0).map((option, i) => (
<DropDownItem>
{option.props.children}
</DropDownItem>
))}
</ul>
);
}