Как отрендерить задачу только в нужной категории-компоненте?

Есть два стейта:

const [toDoList, setToDoList] = useState([]);
const [tasks, setTasks] = useState([]);

И код:

<ul className={styles.list}>
  {toDoList.map(({ categoryName, color, id }) => (
    <CategoryContainer
      title={categoryName}
      titleColor={color}
      key={id}
      openCreateTaskForm={openCreateTaskForm}
      isCreateTaskFormOpen={isCreateTaskFormOpen}
      createTask={createTask}
      cancelCreateTask={cancelCreateTask}
      openCategoryNameForm={openCategoryNameForm}
      isCategoryNameFormOpen={isCategoryNameFormOpen}
      onSaveEditCategoryName={onSaveEditCategoryName}
      onCancelEditCategoryName={onCancelEditCategoryName}
      tasks={tasks}
    >

    {
    tasks.map(({task, id, isDone}) => (
      <Task key={id} id={id}>{task}</Task>
    ))
    }

    </CategoryContainer>
  ))}
</ul>

Проблема: При добавлении задачи в одну категорию, сама задача появляется во всех категориях. Как сделать так чтобы задача добавлялась только в категорию где она была создана?

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Lev Shportak

При создании таски не плохо было бы указывать id категории в которой она создавалась, а затем просто сравнивать при переборе условие вроде idCategory===id && <Task ...>

→ Ссылка
Автор решения: qweezz

Я понимаю суть вашей мысли, но не понимаю как это реализовать.

Таска создается этой функцией:

В компоненте формы новой таски

  function handleSubmit(e) {
    e.preventDefault();
    onSaveCreateTask({
      task:inputValue,
      isDone: false,
      id: uuid(),
    });
  }

Стейт тасков обновляется так:

function createTask(inputValue) {
    setTasks((prevState) => [...prevState, inputValue]);
  }

Непонятные моменты:

  1. Каким образом я могу определить категорию в которой была создана таска?
  2. Если определяю категорию в которой была создана задача, то в объект задачи надо добавить id категории?
→ Ссылка