#javascript #html #axios
#javascript #HTML #axios
Вопрос:
Мой JS-код таков, но я хочу иметь возможность moves
отображать массив в HTML в формате списка, как я могу это сделать?
const getData = () => {
axios
.get(" https://pokeapi.co/api/v2/pokemon/charmander")
.then((response) => {
const stats = response.data.moves;
const moves = stats.map((obj) => {
return obj.move.name;
});
})
.catch((error) => console.log(error));
};
Ответ №1:
Вы можете использовать безопасный помощник для заполнения узла на странице, скажем <div id="list"></div>
, чтобы ваш код мог делать что-то вроде:
import {render, html} from '//unpkg.com/uhtml?module';
const getData = () => {
axios
.get(" https://pokeapi.co/api/v2/pokemon/charmander")
.then((response) => {
const stats = response.data.moves;
render(document.getElementById('list'), html`
<ul>
${stats.map((obj) => html`<li>${obj.move.name}</li>`)}
</ul>
`);
})
.catch((error) => console.log(error));
};
Это также будет правильно при следующем вызове getData
в случае изменения данных.
Комментарии:
1. В настоящее время я использую vanilla JS. Я получаю эту ошибку
TypeError: WeakMap key must be an object, got key
или мне тоже нужно что-то добавить в свой HTML?2. вы должны быть уверены
document.getElementById('list')
, что это неnull
3. теперь отлично работает. Я понял, что ввел свой идентификатор не в тот HTML-элемент
4. Я просто хочу спросить еще кое-что и исследовать немного больше. Что такое модуль рендеринга, который мы импортировали сюда?
Ответ №2:
Вот предложение, не требующее библиотеки (только VanillaJS) :
const getData = () => {
axios
.get(" https://pokeapi.co/api/v2/pokemon/charmander")
.then((response) => {
const stats = response.data.moves;
// Create <ul> tag
const ul = document.createElement('ul');
stats.forEach((obj) => {
// Create <li> tag
const li = document.createElement('li');
// Add text to <li>
li.textContent = obj.move.name;
// Append <li> to <ul>
ul.appendChild(li);
});
// Append <ul> somewhere in your DOM
document.getElementById('ul_parent').appendChild('ul');
})
.catch((error) => console.log(error));
};
Комментарии:
1. Я получаю
TypeError: document.getElementById(...) is null
сообщение об ошибке, а также данные, которые я получаю от своего API, находятся внутриreturn obj.move.name
после того, как я повторяюstats
переменную