React: React-Palette «Недопустимый тип элемента: ожидалась строка, но получено: объект»

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

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

Используя этот пример:

import Palette from 'react-palette';
// In your render...
<Palette src = {"https://upload.wikimedia.org/wikipedia/commons/6/62/Paracas_National_Reserve%2C_Ica%2C_Peru-3April2011.jpg"}>
  {({ data, loading, error }) => (
    <div style = {{ color: data.vibrant }}>
      Text with the vibrant color
    </div>
  )}
</Palette>

Я получил:

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

В этом примере:

import { usePalette } from 'react-palette'

const { data, loading, error } = usePalette("https://upload.wikimedia.org/wikipedia/commons/6/62/Paracas_National_Reserve%2C_Ica%2C_Peru-3April2011.jpg")

<div style = {{ color: data.vibrant }}>
  Text with the vibrant color
</div>

Я просто получаю нормаль с текстом того же цвета, что и тело.

Я делаю что-то неправильно? Насколько я понимаю, color текста должен измениться, но если я проверю свой элемент, color даже не назначен, скорее всего, потому что код не работает.

Обновлено: Мой полный App.js:

import React from 'react';
import logo from './logo.svg';
import './App.css';
import Palette from 'react-palette';

function App() {
  return (
    <div className = "App">
      <Palette src = {'https://upload.wikimedia.org/wikipedia/commons/6/62/Paracas_National_Reserve%2C_Ica%2C_Peru-3April2011.jpg'}>
        {({ data, loading, error }) => (
          <div style = {{ color: data.vibrant }}>
            Text with the vibrant color
          </div>
        )}
      </Palette>
    </div>
  );
}

export default App;

Вы поместили свой компонент Palette и div в функцию рендеринга?

sdkcy 13.07.2019 14:36

Вы пытались регистрировать данные, загрузку и ошибку во втором примере?

Gaël S 13.07.2019 14:37

Компонент палитры находится внутри рендера, да. Второй метод действительно работает после его регистрации, поэтому не уверен, о чем это. Есть идеи, почему первый не работает?

Leonardo Petrucci 13.07.2019 14:42

не могли бы вы поделиться кодом, который вы написали на основе каждого примера?

Olivier Wilkinson 13.07.2019 14:54

Мой код буквально просто пример. Но конечно, я отредактировал ОП.

Leonardo Petrucci 13.07.2019 14:56

какая у тебя версия реакции? Кажется, я знаю, в чем проблема... или, по крайней мере, у меня есть предположение.

Olivier Wilkinson 13.07.2019 15:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
6
393
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Компонент палитры в react-palette экспортируется следующим образом

export { Palette as default } from "./Palette";

Попробуйте изменить импорт на это

import { Palette } from 'react-palette';

Это действительно сработало... Спасибо, никогда бы не подумал изменить это.

Leonardo Petrucci 13.07.2019 15:20

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