Я пытаюсь сделать эту функцию onChange динамической, но работает в TypeError. Любые идеи с благодарностью.

Этот способ работает как ожидалось:

onChange = e ={amp}gt; { // current array of workShifts const workShifts = this.state.workShifts; let index; // check if the check box is checked or unchecked if (e.target.checked) { // add the numerical value of the checkbox to workShifts array workShifts.push(e.target.value); } else { // or remove the value from the unchecked checkbox from the array index = workShifts.indexOf(e.target.value); workShifts.splice(index, 1); } // update the state with the new array of workShifts this.setState({ workShifts: workShifts }); console.log('State:', this.state); }; 

Новая функция, которая генерирует TypeError:

 onChange = e ={amp}gt; { // current array in state const dataGroup = e.target.getAttribute('data-group'); const targetItem = 'this.state.'   dataGroup; let index; // check if the check box is checked or unchecked if (e.target.checked) { // add the value of the checkbox to array targetItem.push(e.target.value); } else { // or remove the value from the unchecked checkbox from the array index = targetItem.indexOf(e.target.value); targetItem.splice(index, 1); } // update the state with the new array this.setState({ [dataGroup]: targetItem }); console.log('State:', this.state); }; 
enzofass

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,

Вы пытаетесь использовать метод push из string . Попробуйте вместо const targetItem = 'this.state.' dataGroup; const targetItem = 'this.state.' dataGroup; использовать const targetItem = this.state[dataGroup];

boikevich

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,