Как я могу установить значение по умолчанию, чтобы не получить NaN

#javascript #reactjs

Вопрос:

Я кодирую трекер задач, когда вы можете добавлять и удалять задачи. У каждой задачи есть значение идентификатора, и при добавлении новой задачи идентификатор будет последним 1. Если я удалю все задачи, а затем добавлю одну, идентификатор будет NaN, я хотел бы получить некоторую помощь 🙂

задачи —

 const App = () => {
  const [tasks, setTasks] = useState([
    {
      id: 1,
      text: 'Taking react course',
      day: 'Aug 29th at 9:00am ',
      reminder: true,
    },

    {
      id: 2,
      text: 'Exersice at the gym',
      day: 'Aug 29th at 1:00pm',
      reminder: true,
    },
  ]);
};
 

при добавлении задачи —

 const onAdd = (task) => {
  const id = tasks[tasks.length - 1]?.id   1; // Without this line I am getting undefined id error so thats why I putted that question mark over there.
  const newTask = { id, ...task };
  setTasks([...tasks, newTask]);
};
 

Ответ №1:

Предположительно, это потенциально может привести к null тому, что здесь:

 tasks[tasks.length - 1]?.id
 

Но вы можете указать значение по умолчанию 0 , когда это произойдет:

 tasks[tasks.length - 1]?.id ?? 0
 

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

 const id = (tasks[tasks.length - 1]?.id ?? 0)   1;
 

Ответ №2:

Вы можете условно присвоить значение идентификатору следующим образом:

мы проверим, пуст ли массив задач или нет, если он пуст, мы установим id=1 другое, мы будем следовать обычной логике

 const onAdd = (task) => {
const id = tasks.length <= 0 ? 1 : tasks[tasks.length - 1]?.id   1; 
const newTask = { id, ...task };
setTasks([...tasks, newTask]);