react数组代码有问题
代码如下
let fileMessage = [
{
code: 'file-invalid-type',
message: 'Select the correct file type',
},
{
code: 'file-too-large',
message: 'Total File Size is limited to maximum 25MB',
},
];
let fileRejections = [
{
errors: [
{ code: 'file-invalid-type', message: 'File type must be one of image/*' },
{ code: 'file-too-large', message: 'File is larger than 26214400 bytes' } // 有可能是这行数据
],
},
];
const fileRejectionItems = fileRejections.map(({ file, errors }) => (
<div key={file.path}>
<>
{errors.map((e) => (
<ErrorMsg
key={e.code}
className={classes.errorMsg}
type='error'
label={fileMessage.find((i) => (i.code === e.code ? i : e.message)).message}
/>
))}
));
希望根据code相等,return fileMessage 里对应的message,但是始终return这个message: 'Select the correct file type'
逻辑有问题,
label={fileMessage.find((i) => (i.code === e.code ? i : e.message)
).message}
粉红色这句find一项时,返回值就是等级于true的了,不管code是否匹配,所以直接返回了第一项的内容
改下面这样,当fileMessage找不到code匹配的项,再用e这个变量中的message
label = { (fileMessage.find(i => i.code === e.code) || e).message }