У меня есть REST API, который возвращает изображение при запросе с именем файла url + (плюс), и я хочу отобразить его в столбце изображения в таблице.
Я использую:
ax ios 0.18.0
Reactionj 16.13.0
Reaction- bootstrap -table2-toolkit 1.3.1
Мое предположение состоит в том, что response- bootstrap -table2-toolkit работает как функция карты.
У меня есть столбец, который будет отображать изображение следующим образом:
{
dataField: 'img_url',
text: 'Image',
formatter: (cell, row) => {
let renderPosts = async () => {
try {
let res = await axios.get('https://myApiUrl:6601/'+cell,{
responseType: 'arraybuffer'
});
let posts = _imageEncode(res.data);
console.log(posts)
return <img src={`data:image/jpeg;base64,${posts}`} />
} catch (err) {
console.log(err);
}
}
return renderPosts()
}
},
Но я получил ошибку например:
Объекты недопустимы как дочерние элементы React (найдено: [обещание объекта]). Если вы хотите отобразить коллекцию дочерних элементов, используйте вместо этого массив.
UPDATE
Я изменил метод выше. делая эту функцию вне функции render ()
getImg = async (cell) => {
try {
let res = Promise.resolve(axios.get('https://myApiUrl:6601/'+cell,{
responseType: 'arraybuffer'
}));
return res.then(res=>{
let mimetype="image/jpeg"
let x =`data:${mimetype};base64,${btoa(String.fromCharCode(...new Uint8Array(res.data)))}`
console.log(x)
return x
})
} catch (err) {
console.log(err);
}
}
, тогда я использую функцию getImg () внутри formatter вот так
{
dataField: 'img_url',
text: 'Image',
formatter: (cell, row) => {
let x = async () => await this.getImg(cell)
return <img src={`${x()}`} />
},
},
но я получил [объект Обещание] так:
Я имею в виду просто хочу получить строку результата из преобразования в base64
Я все еще новичок в этой проблеме,
надеюсь, вы можете помочь, спасибо:)