В общем последовательность такая: listData - это класс, в котором хранится функция getCharackters(), которая берёт объект данных с APIшки - и возвращет его.
Ну и в общем я сделал функц. getCardsList() - которая записывает в State пер.cardListArray - это уже только нужные данные - массив объектов персонажей(на 2м скрине)
В render() я беру этот массив данных из state, прохожусь по нему map-ом и деструктуризацией беру конкретно нужные позиции из объектов - name, description, image. Ну и ставлю их 'рендерящемуся' элементу. Ну и в итоге у нас должен быть массив нужных элементов - cards
И этот массив я ставлю в return метода render(). Но что-то не работает, ошибку даже не выдаёт, просто как будто этого конечного массива нет. Подскажите, в чём дело?
*я там ещё 2 вопросика по коду в комментах оставил, буду благодарен если поясните
import React, {Component} from 'react';
import './charList.scss';
import Resource from '../../api/data.jsx';
class CharList extends Component{
state = {
dataCards: {}
}
listData = new Resource()
getCardsList = async () => { // Тут нужна конструкция async-await? Влияет ли она на тут на что-то ?
await this.listData.getCharackters().then(
arr => {
const cardListArray = arr.data.results;
this.setState(() => ({dataCards: cardListArray}))
//console.log(cardListArray) - массив объектов перссонажей
}
)
}
componentDidMount(){
this.getCardsList()
}
render(){
const cardDataList = Array.from(this.state); // почему то без Array.from() - возвращает ошибку. Хотя по-идее это и так уже массив
const cards = cardDataList.map(card => {
let [name, description, image] = [card.name, card.description, card.thumbnail.path + '.' + card.thumbnail.extension]
return (
<div className="char__list">
<ul className="char__grid">
<li className="char__item">
<img src={image} alt="abyss"/>
<div className="char__name">{name}</div>
</li>
</ul>
<button className="button button__main button__long">
<div className="inner">{description}</div>
</button>
</div>
)
})
return(
<div className='card-main'>
{cards}
</div>
)
}
}
export default CharList;
*Да, я знаю что на классах, без хуков - почти никто уже не пишет, но я ток начал учить React, так что вот так вот