Я работаю с некоторыми элементами svg, и я создал кнопку приращения.
Кнопка приращения принимает значения path d
, преобразует их в массив и суммирует 5
из третьего элемента массива. Если элемент 'L'
или 'M'
, он ничего не делает
Здесь функция click в редуксе, она принимает значения состояния приращения действия
const a = action.index;
let string = state[a].d;
Он преобразуется в массив
let array = string.split(" ");
а затем он выполняет все вычисления i, указанные в цикле
См. полную функцию редукции
switch(action.type) {
case 'INCREMENT_COORDINATES' :
console.log("incrementing coordinaates")
const a = action.index;
let string = state[a].d;
let array = string.split(" ");
let max = array.length;
let i = 3;
let click = () => {
i++;
if ( i === max ) i = 3;
if (array[i] !== 'M' && array[i] !== 'L') array[i] = parseInt(array[i]) + 5;
array.join(' ');
};
return [
...state.slice(0,a), // before the one we are updating
{...state[a], d: click()}, // updating the with the click function
...state.slice(a + 1), // after the one we are updating
]
default:
return state;
}
Смотрите демонстрацию видео, пока я отлаживаю его http://www.fastswf.com/uSBU68E
Как вы можете видеть, код делает правильный расчет и суммирует 5
с четвертым элементом и возвращает номер 331
. Так что все хорошо! Но проблема в том, что мне нужно вернуть его как '331'
, новый элемент массива, чтобы продолжить цикл.
Я создал демоверсию, которая отлично работает и делает то, что я хочу достичь, используя тот же код! Поэтому я не понимаю, что я делаю неправильно, когда применяю его в своей функции сокращения.
Смотрите jsBin, отлично работая, как я хочу.