Я в основном хочу сделать следующее:
const intialDefaultValues = {
weekdays: {
monday: [
{ startTime: "", endTime: "" },
{ startTime: "", endTime: "" },
{ startTime: "", endTime: "" }
],
tuesday: [
{ startTime: "", endTime: "" },
{ startTime: "", endTime: "" },
{ startTime: "", endTime: "" }
],
wednesday: [
{ startTime: "", endTime: "" },
{ startTime: "", endTime: "" },
{ startTime: "", endTime: "" }
],
// ...
Как вы можете видеть, это становится довольно повторяющимся, и я хотел бы повторно использовать часть кода:
const daySchema = [
{ startTime: "", endTime: "" },
{ startTime: "", endTime: "" },
{ startTime: "", endTime: "" }
];
const intialDefaultValues = {
weekdays: {
monday: daySchema,
tuesday: daySchema,
wednesday: daySchema,
// etc.
Но это не работает ...
Попытки
Один источник Я нашел упомянутое прохождение по ссылке для объектов и массивов в Javascript. Так что это заставило меня попробовать несколько способов клонировать его. Все еще не повезло.
Я попробовал хороший старый метод myArray.slice()
, как в ES6: [...myArray]
:
const intialDefaultValues = {
weekdays: {
monday: [...daySchema],
tuesday: [...daySchema],
wednesday: [...daySchema],
// etc.
Воспроизводимый пример
I Я создал CodeSandbox для отображения проблемы, с которой я столкнулся: https://codesandbox.io/s/interesting-wave-e7gty
Подробная версия
Чтобы увидеть эту ошибку, сделайте следующее:
- В первой форме нажмите на слово среда. Он должен открыться.
- Затем нажмите «Отправить»
Результат: Имя и первые поля «От» и «Кому» должны быть красного цвета. Это работает!
Компактная версия
Теперь для компактного примера:
- Во второй форме нажмите на слово среда. Он должен открыться.
- Затем нажмите «отправить»
Ожидаемый результат: имя и первые поля «От» и «Кому» должны быть красного цвета.
Фактический результат: проверяется только имя