Представление дерева React JS для отображения ответа api

В моем приложении для реагирования я реализую древовидную структуру для отображения ответа api в более удобочитаемом формате. Для этого я использую tree view-response-bootstrap.

import React from 'react';
import ReactDOM from 'react-dom';
import TreeView from 'treeview-react-bootstrap'

class Example extends React.Component {
    constructor(){
        super();
        // SET YOUR DATA
        this.state = {
            data: [
                {
                    text: "John Peter",
                    nodes: [
                      {
                        text: "ID: 11111",
                        nodes: [
                          {
                            text: "VIN"
                          },
                          {
                            text: "Policy Effective Date"
                          },
                          {
                            text: "Policy Expiration Date"
                          },
                          {
                            text: "Vehicle Make"
                          },
                          {
                            text: "Vehicle Model"
                          }
                        ]
                      },
                      {
                        text: "ID: 123456",
                        nodes: [
                            {
                              text: "VIN"
                            },
                            {
                              text: "Policy Effective Date"
                            },
                            {
                              text: "Policy Expiration Date"
                            },
                            {
                              text: "Vehicle Make"
                            },
                            {
                              text: "Vehicle Model"
                            }
                          ]
                      }
                    ]
                  },
                  {
                    text: "Scott Brown"
                  }
            ]
        }

    }

    render(){
        return (
            // RENDER THE COMPONENT
            <TreeView data = {this.state.data} />
        );
    }
}

export default Example

Сейчас я использую фиктивные данные, но это тот формат, в котором я хочу, чтобы мои данные отображались. Ответ api, который у меня есть, - это «массив объектов», и он только в формате JSON одного уровня.

Образец ответа -

[
                    {
                        "id": "1234",
                        "name": "John Scott",
                        "vin": "45",
                        "make": "Toyota",
                        "model": "Etios"
                    },
                    {
                        "id": "4567",
                        "name": "James Scott",
                        "vin": "67",
                        "make": "Hyundai",
                        "model": "Etios"
                    }
]

Если вы видите ответ, я бы хотел, чтобы значение моего ключа было напечатано в виде древовидной структуры.

Есть ли способ обработать этот ответ с помощью treeview-response-bootstrap?

Я не уверен, нужно ли мне использовать функцию карты внутри моего метода рендеринга для итерации и отображения данных и как это будет работать. Может ли кто-нибудь сообщить мне, правильно ли я делаю это или есть лучший способ сделать это. заранее спасибо.

В вашем ответе api вам необходимо указать отношения между элементами массива. Как вы это определяете?

Kunal Parekh 06.10.2018 07:44

Я всего лишь пытаюсь подобрать ключ и значения для отображения в этом формате. Итак, есть два атрибута, т.е. id, который я возьму в качестве родительского узла и добавлю несколько других атрибутов в качестве его дочернего. Это моя идея, но я не уверен, смогу ли я выполнить эту работу, не меняя бэкэнд.

techie_questie 06.10.2018 07:46

Вы можете сделать вызов Ajax, используя axios в componentDidMount, и как только вы получите ответ, вы можете установить ответ в этом состоянии.

Kunal Parekh 06.10.2018 07:50

да, но как я могу отобразить ответ в указанном выше формате?

techie_questie 06.10.2018 07:55

Вы можете преобразовать свой ответ с сервера, а затем установить состояние. Если вы можете поделиться образцом ответа с сервера, я могу больше помочь.

Kunal Parekh 06.10.2018 08:45

Я добавил образец ответа выше. Я хочу выбрать ключи и значение и показать их в виде дерева.

techie_questie 06.10.2018 10:19

Добавили ответ. Вы должны быть в состоянии трансформироваться в соответствии с вашими потребностями.

Kunal Parekh 06.10.2018 11:13

конечно, позвольте мне попробовать это. обновлю здесь.

techie_questie 06.10.2018 17:00

На самом деле я использую redux для всех своих вызовов API. столкнулся с проблемой с setState - говорит, что "не удается прочитать свойство setState неопределенного". Должен ли я использовать его как componentWillreceiveProps в моей композиции?

techie_questie 08.10.2018 12:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
2 599
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете преобразовать ответ примерно так. Только что добавили фиктивный ответ. Пожалуйста, проверьте следующий код и дайте мне знать, поможет ли это:

import React from "react";
import ReactDOM from "react-dom";
import TreeView from "treeview-react-bootstrap";
import axios from "axios";

class Example extends React.Component {
    constructor() {
        super();
        // SET YOUR DATA
        this.state = {
            data: []
        };
    }
    componentDidMount() {
        axios
            .get("https://www.mocky.io/v2/5bb85d723000005f00f93bb6")
            .then(data => {
                let transformedData = data.data.map(d => {
                    return {
                        text: d.text,
                        nodes: [
                            {
                                text: "dummy 1",
                                nodes: []
                            }
                        ]
                    };
                });
                this.setState({ data: transformedData });
            });
    }

    render() {
        return (
            // RENDER THE COMPONENT
            <TreeView data = {this.state.data} />
        );
    }
}

ReactDOM.render(<Example />, document.getElementById("app"));

Вы также можете увидеть это в действии здесь: https://codesandbox.io/s/73ryny9ywq?autoresize=1&hidenavigation=1

Другие вопросы по теме