Tengo un problema con hacer que mi función sea más inteligente. Logro buenos resultados, pero pienso en la otra solución.
Puedo tomar boolean u object como parámetro. Cuando el parámetro es el object , me gustaría mantenerlo como ahora. Cuando el parámetro es un valor boolean , me gustaría crear un objeto, donde las claves se toman de otra variable (menos importante) y los valores son este boolean .
Mi solución asume
¿Eso esta bien?
revisa mi codigo
const onAddAll = value => { let items = {} if (typeof value === 'boolean') { terms.forEach(term => items[ term ] = value) } if (typeof value === 'object') { items = value } const checked = Object.keys(items).filter(k => items[ k ]) setChecked(checked) }Imo, no necesitaría la segunda condición y la haría más inteligente, pero no tengo idea de cómo. ¡Por favor ayuda!
lo uso aquí
<Checkbox items={getItems()} onChange={onAddAll} > <label className="sr-only"> {i18n.t('DROPDOWN.SELECT_ALL')} </label> </Checkbox>y aquí
<Dropdown> {[ 'all', 'none' ].map((key, i) => ( <li key={key} className="dropdown__item"> <div className="dropdown__link" onClick={onAddAll.bind(this, !i)}> {i18n.t(`DROPDOWN.${key.toUpperCase()}`)} </div> </li> ))} </Dropdown>