[英]What can I do to apply a prop to only one item in a map/array on the render method of a React component?
我试图根据道具仅对数组中的一项进行更改。 我有这个清单:
interface FieldProps {
fileLimitWarning?: // I STILL NEED TO FIGURE THIS OUT
}
const DataField = (props: FieldProps) => {
const { fileLimitWarning, handleFileSelection } = props;
return (
<>
{fileLimitWarning && <p>This file exceeds the max size of 250mb</p>}
<input onChange={e => handleFileSelection(e.target.files)} />
</>
}
const ContainerOfDataField = () => {
const [fileLimitWarning, setFileLimitWarning] = useState(false);
const handleFileSelection = (files) => {
setFileLimitWarning(false);
const [currentFile] = files;
if(currentFile?.size <= 250000000) {
setFileLimitWarning(true);
}
}
return (
<ul>
{
fields?.map((promoField: Field, index: number) => {
return (
<DataField
key={index}
fileLimitWarning={fileLimitWarning}
handleFileSelection={handleFileSelection}
/>
);
})
}
</ul>
)
}
在这种情况下,我想要的是仅在DataField
组件对应时返回 null。 现在,每当ContainerOfDataField
组件上的fileLimitWarning === true
时,它就会隐藏/删除/删除DataField
组件中的所有Typography
节点。 所以我需要的是只隐藏与问题出处匹配的索引。
清楚吗?
我认为理想情况下,您会在地图的每次迭代中定义fileLimitWarning
,因为(我假设)它是当前项目的属性,而不是全局属性:
return (
<ul>
{
fields?.map((promoField: Field, index: number) => {
// { currentFile } = promoField???
return (
<DataField
key={index}
fileLimitWarning={currentFile?.size <= 250000000}
handleFileSelection={handleFileSelection}
/>
);
})
}
</ul>
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.