Как добавить слово «КОПИРОВАТЬ» в состояние редуктора в React?

Мне нужно добавить слово «Копировать» в мой объект-редуктор.

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]
    };

Вы имеете в виду prepend? Почему не что-то вроде duplicatedWidget = { ...widgetToDuplicate, widgetName: 'COPY+' + widgetToDuplicate.widgetName }

Icepickle 18.06.2018 11:48

можем ли мы добавить счетчик для этого, скажем "COPY1 + Widget", "COPY2 + Widget"

R9102 18.06.2018 13:28

Конечно, если бы у вашего виджета было уникальное имя, теперь, если люди будут дублировать скопированный виджет, его уникальным именем будет не сам виджет, а уже copyxxx. Таким образом, либо вам придется просмотреть все виджеты и проверить виджет с самой высокой копией (x) и увеличить на единицу, либо вы сохраните идентификатор для каждой копии, но вам потребуется какая-то проверка, тогда, если имя уже скопировано там

Icepickle 18.06.2018 13:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать это так,

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"

R9102 18.06.2018 13:14

мы можем добавить сюда счетчик ?? скажем "Widget1", "Widget2"

R9102 18.06.2018 13:15

да, вам нужно будет выполнить строковый поиск "копия", а затем проанализировать номер после этого и добавить эту строку

Rohith Murali 18.06.2018 13:17

нужно искать в самом редуксе, нужно также изменить действие ?? не могли бы вы обновить свой ответ

R9102 18.06.2018 13:26

Перед const duplicatedWidget= ... обработайте новое имя, найдя copy(number) из widgetToDuplicate.widgetName. Затем увеличьте число и переназначьте.

Rohith Murali 18.06.2018 13:28

Извините, не могли бы вы подробнее рассказать мне об этом. Новинка, чтобы отреагировать

R9102 18.06.2018 13:50

Спасибо, Рохит, это мне очень помогло

R9102 18.06.2018 19:35

Прохладный. Рад, что смог помочь \ (• ◡ •) /

Rohith Murali 18.06.2018 19:38

Другие вопросы по теме