Посев неслучайного цвета;обратная генерация случайного цвета с семенем - PullRequest
0 голосов
/ 12 октября 2019

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

Это выглядит так:

    seededColorGenerator = (id, delivery_id) => {
    let colorId;
    if (delivery_id){
      colorId = delivery_id
    } else{
      colorId = id
    }
        return randomColor({
              seed: Math.abs(Math.sin(colorId)) + '',
              luminosity: 'light',
              hue: 'random'
          });
      }
    }

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

Итак, я представляю, что моя функция выглядит следующим образомthis:

    seededColorGenerator = (id, delivery_id) => {
    let colorId;
    if (delivery_id){
      colorId = delivery_id
    } else{
      colorId = id
    }

    if (this.state.color){
      return this.state.color
    } else {
        return randomColor({
              seed: Math.abs(Math.sin(colorId)) + '',
              luminosity: 'light',
              hue: 'random'
          });
      }
    }

Как правило, если пользователь выбирает цвет (если this.state.color не пустой), возвращает этот цвет для этого конкретного экземпляра. Если нет, тогда я буду использовать генератор randomColor какрезервная копия, чтобы назначить ЛЮБОЙ цвет, который он выплевывает. Мой вопрос, как я могу предотвратить изменение цвета на все div-ы, использующие эту функцию, на явно выбранный цвет. Могу ли я также выбрать выбор пользователя?

Вот пример использования seededColorGenerator.

style={{backgroundColor: this.props.seededColorGenerator(id, delivery_id)}}>{this.grabCityState(delivery_location)}

Любая помощь будет принята с благодарностью!

...