React - Umieszczenie tablicy w state i przypisanie każdemu jej elementowi wartości 'true'

0

Korzystam z poniższej tablicy:

const categories = ['crimson', 'gold', 'lime', 'dodgerBlue', 'fuchsia'];

Na jej podstawie "wypisuję" sobie komponenty, unikając ręcznego precyzowania każdego inputa, przykładowo:

{categories.map(category => (
   <Input
    key={category}
    type="checkbox"
    name={category}
    value={category}
    onChange={this.changeEvent}
    checked={this.state.categories[category]}
  />
))}

Czy istnieje możliwość "wypisania" ich w state na podstawie tablicy, aby nie korzystać z ręcznego wypisywania każdego z elementów, jak poniżej?

state = {
    categories: {
      crimson: true,
      gold: true,
      lime: true,
      dodgerBlue: true,
      fuchsia: true,
    },
  };

Gdyby nie konieczność przypisania true, to mógłbym wewnątrz state zrobić coś na takiego: array: [...categories],, jednak w tym przypadku nie mam pomysłu.

3

Jak chcesz mieć wyrażenie zamiast pętli to np:

const arr = ['a', 'b', 'c']

const result = arr.reduce((obj, item) => {
  obj[item] = true
  return obj
}, {})

albo:

const arr = ['a', 'b', 'c']

const result = Object.fromEntries(arr.map(item => [item, true]))
0

Po wprowadzeniu poprawek, dzięki @Maciej Cąderek:

  state = {
    categories: {
      ...Object.fromEntries(categories.map(category => [category, true]),),
    },
  };
2

@taktyczny-komentarz:

Jeśli pole categories ma zawierać tylko te wpisy to wystarczy:

  state = {
    categories: Object.fromEntries(categories.map(category => [category, true])),
  };

1 użytkowników online, w tym zalogowanych: 0, gości: 1