Задать вопрос
@hollanditkzn

Как в реакте вывести значение в компонент от ответа сервера?

Есть один нюанс, пришли вот такие даныне
5a6ee17a8833d853922947.png
Делаю сразу неправильно, потому что пробовал по всякому пока не получилось. Но логика скорее всего понятная будет

import React, {Component} from 'react';
import Header from './Header';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
import axios from 'axios';

class Home extends Component{
    constructor(props){
        super(props);
    }
    componentWillMount(){
        axios.get('/api/test-thema').then(response => this.setState(response.data));
    }
    themaList(){
        console.log(this.state);
         for(let i = 0; i<this.state.length; i++){
/** Не знаю как правильно, пробовал и через map но тоже не получается у меня, То есть мне нужно вывести весь список в виде ссылки*/
             <li><Link to='/test/'+{this.state[i].id}>{this.state[i].name}</Link></li>
         }
    }
    render(){
        const { user } = this.props;
        return(
            <div>
                <Header/>
                <h1>Добро пожаловать</h1>
                <div>ФИО: {user.name}</div>
                <div>Должность: </div>
                
                <h3>Доступные тесты: </h3>
<ul>
                    {this.themaList()}//Сюда надо вывести список тем на тесты
                </ul>
                <h3>Доступные тренинги: </h3>
            </div>
        );
    }
}
const mapStateToProps = state => ({
    user: state.login.user
});

export default connect(mapStateToProps)(Home);
  • Вопрос задан
  • 535 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега React
Поскольку у вас с сервера приходит объект, то и работать с ним нужно как с объектом. Ну а лучше преобразовать в массив, поскольку ключи всё равно смысловой нагрузки не несут в данном случае.

class Home extends Component{
    state = {items: []};

    componentWillMount(){
        axios.get('/api/test-thema')
            .then(response => this.setState({item: Object.values(response.data)}));
    }

    render(){
        const { user } = this.props;
        return(
            <div>
                <Header/>
                <h1>Добро пожаловать</h1>
                <div>ФИО: {user.name}</div>
                <div>Должность: </div>
                
                <h3>Доступные тесты: </h3>
                <ul>
                    {this.state.items.map((item) => (
                        <li key={item.id}><Link to='/test/'+{item.id}>{item.name}</Link></li>
                    ))}
                </ul>
                <h3>Доступные тренинги: </h3>
            </div>
        );
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽