ReactJS-从数组中获取值
2020-07-28
69
我有一个图像列表,我想获取位于矩阵零位置的图像的名称。
正如您在图像中看到的那样,名称位于文件中。但是当我尝试
items[0].file
或
items[0]['file']
时,错误
TypeError 返回:无法读取未定义的属性“file”
我的代码:
export function Multiple() {
const handleChange = files => {
files.map(file => {
setItems(item => [
...item,
{
file,
onRemove: handleOnRemove,
onClick: handleOnClick
}
]);
});
};
const handleOnRemove = file => {
setItems(item => [...item.filter(item => item.file.name !== file.name)]);
};
const handleOnClick = file => {
getBase64(file)
setNameImage(file.name)
setIsOpen(true)
};
const [items, setItems] = React.useState([]);
const [isOpen, setIsOpen] = React.useState(false);
const [nameImage, setNameImage] = React.useState('');
const [codeImage, setCodeImage] = React.useState('');
function getBase64(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
setCodeImage(reader.result)
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
}
React.useEffect(() => {
return console.log(items[0]['file'])
}, [items]);
return (
<>
<File
name="image"
label="Upload de imagens"
onChange={handleChange}
required={true}
multiple={true}
>
{items.map((item, index) => (
<File.Item {...item} key={index} />
))}
</File>
<Modal
title={nameImage}
onClose={() => setIsOpen(false)}
show={isOpen}
>
<img src={codeImage} alt='Imagem' className='image' />
</Modal>
</>
);
}
1个回答
首次初始化 items 时,它是一个空数组,因此尝试记录 items[0].file 会出错。添加未定义检查。另外,不要从 useEffect 返回它。 useEffect 中的返回用于清理逻辑。
React.useEffect(() => {
if(items[0] {
console.log(items[0]['file'])
}
}, [items]);
Çağatay Sel
2020-07-28