React.js - получение данных массива из API и добавление к нему символа «#» для формирования шестнадцатеричного цвета - PullRequest
0 голосов
/ 10 марта 2019

Немного предыстории о моем проекте - я пытаюсь взять некоторую информацию из цветового API, который я нашел в Интернете, и создать с ним приложение цвета дня.По сути, он использует React для получения шестнадцатеричного значения из API, а затем я хочу установить цвет фона моей веб-страницы на этот шестнадцатеричный цвет.Единственная проблема заключается в том, что шестнадцатеричное значение, которое я получаю из API, не имеет перед собой «#».Поскольку я новичок в Javascript и React, я пытаюсь взять шестнадцатеричный код, данный мне из API, добавить «#» в его начало, а затем установить это значение в качестве цвета фона.Я просто не очень уверен в синтаксисе, так как я довольно новичок в JS.Это не слишком много кода, и я также добавлю ссылку на API, который я использую.Буду признателен за любую помощь!

import React, { Component } from "react";
import "./App.css";

class App extends Component {
  constructor() {
    super();
    this.state = {
      items: [],
      isLoaded: true
    };
  }

  componentDidMount() {
    fetch("http://www.colr.org/json/colors/random/7")
      .then(res => res.json())
      .then(res => {
        this.setState({
          isLoaded: true,
          items: res.colors
        });
      });
  }

  render() {
    var { items, isLoaded } = this.state;
    var itemName = items.map(item => (
      <div key={item.id}>{item.tags[0].name}</div>
    ));
    var itemHex = items.map(item => <div key={item.id}>{item.hex}</div>);

    if (!isLoaded) {
      return (
        <div>
          <h1>Not Loaded!</h1>
        </div>
      );
    } else {
      return (
        <section style={{ backgroundColor: { itemHex } }} className="App">
          <h1>today's color of the day is: {itemName}</h1>
          <h2>Hex:{itemHex}</h2>
        </section>
      );
    }
  }
}

export default App;

API, который я использую: http://www.colr.org/json/colors/random/7

По сути, я не слишком уверен в том, как 1.) добавить '#'переменная' itemHex 'и 2.) правильно отформатируйте переменную' style 'в моем <section>.Если бы я мог получить помощь с обоими этими вещами, это было бы здорово!Спасибо!

1 Ответ

0 голосов
/ 10 марта 2019

Это должно работать

colors.forEach(color => color.hex = '#' + color.hex)

Результат, используя пример, приведенный в вашей ссылке:

0: {timestamp: 1187574525, hex: "#bdd5e0", id: 43679, tags: Array(2)}
1: {timestamp: 1187574417, hex: "#af3f4a", id: 41216, tags: Array(2)}
2: {timestamp: 1187574348, hex: "#a56149", id: 12284, tags: Array(2)}
3: {timestamp: 1187574327, hex: "#a195b3", id: 39159, tags: Array(2)}
4: {timestamp: 0, hex: "#591d35", id: 5464, tags: Array(2)}
5: {timestamp: 1187574615, hex: "#c8d1b8", id: 8433, tags: Array(3)}
6: {timestamp: 1111913319, hex: "#819eca", id: 8406, tags: Array(2)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...