Я пытаюсь использовать реактивная палитра, чтобы получить доминирующий цвет изображения. Однако я просто не могу заставить его работать, поскольку я либо получаю ошибки, препятствующие правильной загрузке моей страницы, либо он просто не работает.
Первоначально я думал, что проблема связана с конфликтом, поэтому я попытался использовать его в отдельной чистой установке реакции, но проблема все еще сохраняется. Я попытался использовать оба примера, предложенные на странице 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;
Вы пытались регистрировать данные, загрузку и ошибку во втором примере?
Компонент палитры находится внутри рендера, да. Второй метод действительно работает после его регистрации, поэтому не уверен, о чем это. Есть идеи, почему первый не работает?
не могли бы вы поделиться кодом, который вы написали на основе каждого примера?
Мой код буквально просто пример. Но конечно, я отредактировал ОП.
какая у тебя версия реакции? Кажется, я знаю, в чем проблема... или, по крайней мере, у меня есть предположение.





Компонент палитры в react-palette экспортируется следующим образом
export { Palette as default } from "./Palette";
Попробуйте изменить импорт на это
import { Palette } from 'react-palette';
Это действительно сработало... Спасибо, никогда бы не подумал изменить это.
Вы поместили свой компонент Palette и div в функцию рендеринга?