Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2022, 14:01
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

React, компонент
Есть такой код в "первом" компоненте
const [deleted,setDeleted]=useState(false)
const deleteHandler=()=>{  
    const conf = window.confirm(`Вы уверены что ходите удалить "установку"?`);
    if(conf){
      deleteDoc(doc(db,"todos",props.todoId)).then(() => {
          console.log("Document successfully deleted!");
          setDeleted(true)
      }).catch((error) => {
          console.error("Error removing document: ", error);          
      }); 
    }
  }

мне во "втором" компоненте нужно также иметь возможность удалить данную запить. Как мне правильнее сделать? Вынести функцию в Redux, дублировать эту функцию во "втором" компоненте или другой вариант. Спасибо.

Последний раз редактировалось od0201, 17.02.2022 в 15:47.
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2022, 16:01
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Какие проблемы просто вынести функцию и импортировать куда надо?
export async function deleteTodo(todoId) {
  const conf = window.confirm(`Вы уверены что ходите удалить "установку"?`);

  if(conf){
    return deleteDoc(doc(db,"todos", todoId)).then(() => {
      console.log("Document successfully deleted!");
      return true;
    }, (error) => {
      console.error("Error removing document: ", error); 
      return false;
    });
  }

  return false;
}

Если нужно добавть state - обычный кастомный хук вам в помощь:
function useDeleteTodo() {
  const [deleted, setDeleted] = useState(false);
  const deleteHandler = useCallback((todoId) => {
    deleteTodo(todoId).then(setDeleted);
  }, []);
  return [deleted, deleteHandler];
}
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 17.02.2022, 18:30
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

Проблемы в том, что "плаваю" и хотелось бы знать как правильно делать

Все работает, большое спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2022, 18:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от od0201
хотелось бы знать как правильно делать
"Правильно" у всех свое...

Не дублировать код - уже шаг к правильному.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
React Router - re-render компонента при смене url smegol Библиотеки/Тулкиты/Фреймворки 9 29.09.2018 23:58
node.js + react не принимает пост запрос korih Node.JS 0 15.04.2018 17:52
React + Redux не обновляется компонент при изменение store smegol Библиотеки/Тулкиты/Фреймворки 2 15.11.2017 15:07
Ищу Senior Frontend (React, Angular), Москва, 140 - 180 000 gross, full time офис. Ekaterina Polyakova Работа 0 11.08.2016 19:07
Разметка для Google closure compiler monolithed Оффтопик 11 04.09.2013 00:50