Реагировать — я не могу передать свое значение datepicker в качестве аргумента, потому что это объект, и я не могу преобразовать его в строку

#reactjs #react-datepicker

Вопрос:

Я создаю приложение со списком дел, и одно из полей-дата.

Ниже показано, где я устанавливаю Выбранную дату

         <div>
            <label>Select Date</label>
            <Datepicker 
                selected={selectedDate} 
                onChange={(date) => setSelectedDate(date)}
                placeholder='Select Date' 
                minDate={new Date()}
                isClearable 
                showYearDropdown
                scrollableYearDropdown  
            />
        </div>
 

Я пытаюсь передать его в функцию onAdd

     onAdd({ text, selectedDate , reminder })
 

Однако я получаю ошибку — «Объекты недопустимы в качестве дочернего элемента React», потому что selectedDate-это объект, и мне нужно передать строку.

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

     onAdd({ text, selectedDate.toLocaleDateString() , reminder })
 

Точка завершения подсвечивается, и ошибка говорит, что», » ожидалось.

Кто-нибудь может мне помочь?

Функция onAdd выше приводит к этому, но, похоже, ошибка возникает на шаге выше.

 const addTask = (task) => {
  const id = Math.floor(Math.random()*10000) 1
  const newTask = {id, ...task }
    setTasks([...tasks, newTask])
}
 

Комментарии:

1. onAdd({ text, selectedDate.toLocaleDateString() , reminder }) входные данные-это объект. Вы используете синтаксис короткой руки, так что вызов на самом деле onAdd({ text:text, selectedDate.toLocaleDateString() , reminder:reminder }) . Теперь, каков ключ от вашей 2-й собственности? Ничего. Вот почему он жалуется. Попробуйте дать такое имя, как onAdd({ text, selectedDate:selectedDate.toLocaleDateString() , reminder })

2. onAdd({ text, selectedDate.toLocaleDateString() , reminder }) недопустимый JS; вы не можете использовать стенографию обозначения объектов, если это неверный ключ.

3. «Объекты недопустимы как дочерние элементы React» — это другая проблема. Можете ли вы поделиться кодом, в котором он используется?

4. @SanishJoseph большое спасибо! вы ответили на мой вопрос. Я не понимал, что он использует синтаксис короткой руки. Я отредактировал, как вы предложили, selectedDate:selectedDate.toLocaleDateString()

5. приятно это знать. Я добавлю к нему ответ, чтобы кто-нибудь мог получить помощь.

Ответ №1:

onAdd({ text, selectedDate.toLocaleDateString() , reminder }) вход этой функции является объектом. Вы используете синтаксис короткой руки, так что вызов на самом деле onAdd({ text:text, selectedDate.toLocaleDateString() , reminder:reminder }) . Теперь, каков ключ от вашей 2-й собственности? Ничего. Вот почему он жалуется. Попробуйте дать такое имя, как onAdd({ text, selectedDate:selectedDate.toLocaleDateString() , reminder })