В общем последовательность такая: 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 (
{name}
) })
return(
{cards}
)
} }
export default CharList;
*Да, я знаю что на классах, без хуков - почти никто уже не пишет, но я ток начал учить React, так что вот так вот
Ну и в общем я сделал функц. getCardsList() - которая записывает в State пер.cardListArray - это уже только нужные данные - массив объектов персонажей(на 2м скрине)
В render() я беру этот массив данных из state, прохожусь по нему map-ом и деструктуризацией беру конкретно нужные позиции из объектов - name, description, image. Ну и ставлю их 'рендерящемуся' элементу. Ну и в итоге у нас должен быть массив нужных элементов - cards
И этот массив я ставлю в return метода render(). Но что-то не работает, ошибку даже не выдаёт, просто как будто этого конечного массива нет. Подскажите, в чём дело?
*я там ещё 2 вопросика по коду в комментах оставил, буду благодарен если поясните
*Да, я знаю что на классах, без хуков - почти никто уже не пишет, но я ток начал учить React, так что вот так вот