Мне нужно добавить слово «Копировать» в мой объект-редуктор.
WidgetList - это массив объектов. Который состоит из [{widgettype:'barchart' widgetName:'Widget'}], вывод принят: [{widgettype:'barchart' widgetName:'copy-Widget'}]
Когда я нажимаю кнопку дублирования, я могу четко выделить повторяющиеся элементы, чтобы отличить дубликат от исходного виджета. Необходимо добавить "Copy'Word" перед widgetName.
Вот мой код:
// Reducer
case types.DUPLICATE_DATA:
const duplicatedWidget = {
...widgetToDuplicate,
widgetId: uuid(),
};
return { ...state,
boardList: [...newBoardList]
};
можем ли мы добавить счетчик для этого, скажем "COPY1 + Widget", "COPY2 + Widget"
Конечно, если бы у вашего виджета было уникальное имя, теперь, если люди будут дублировать скопированный виджет, его уникальным именем будет не сам виджет, а уже copyxxx. Таким образом, либо вам придется просмотреть все виджеты и проверить виджет с самой высокой копией (x) и увеличить на единицу, либо вы сохраните идентификатор для каждой копии, но вам потребуется какая-то проверка, тогда, если имя уже скопировано там



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать это так,
case types.DUPLICATE_DATA:
var str = widgetToDuplicate.widgetName;
var copyStr = str.match(/copy\([0-9]+\)$/g);
if (copyStr){
var number = parseInt(copyStr[copyStr.length-1].match(/[0-9]+/g)[0]);
str = str.replace(copyStr, "copy("+(number+1) +")")
}
else str = str+'-copy(1)';
const duplicatedWidget = {
...widgetToDuplicate,
widgetName: str,
widgetId: uuid(),
};
return { ...state,
boardList: [...newBoardList]
};
Murali - когда я нажимаю 5 дубликатов - появляется "Widget-copy-copy-copy-copy-copy"
мы можем добавить сюда счетчик ?? скажем "Widget1", "Widget2"
да, вам нужно будет выполнить строковый поиск "копия", а затем проанализировать номер после этого и добавить эту строку
нужно искать в самом редуксе, нужно также изменить действие ?? не могли бы вы обновить свой ответ
Перед const duplicatedWidget= ... обработайте новое имя, найдя copy(number) из widgetToDuplicate.widgetName. Затем увеличьте число и переназначьте.
Извините, не могли бы вы подробнее рассказать мне об этом. Новинка, чтобы отреагировать
Спасибо, Рохит, это мне очень помогло
Прохладный. Рад, что смог помочь \ (• ◡ •) /
Вы имеете в виду prepend? Почему не что-то вроде
duplicatedWidget = { ...widgetToDuplicate, widgetName: 'COPY+' + widgetToDuplicate.widgetName }