Changes between Version 1 and Version 2 of UseCaseImplementations


Ignore:
Timestamp:
02/03/24 18:43:44 (10 months ago)
Author:
211012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseImplementations

    v1 v2  
    6060- catch сегментот се извршува кога одговорот на барањето е со статус 4ХХ, односно грешка, па во овој случај корисникот се пренасочува до страница со грешка
    6161- finally сегментот се извршува во секој случај, односно означува дека комуникацијата е завршена, вратен е одговор од серверот, па тука се поставува знаменцето isLoading назад на false
     62
     63==== usePost
     64{{{#!javascript
     65import axios from "../../axios";
     66
     67const useCreate = () => {
     68
     69    const createEntity = async (url, entity, getData) => {
     70        console.log(entity)
     71        await axios
     72            .post(url, null, {
     73                params: entity,
     74            })
     75            .then((res) => {
     76                getData(prev => ++prev)
     77            })
     78            .catch((err) => {
     79                console.log(err);
     80            })
     81            .finally(() => {
     82            });
     83    }
     84
     85    return {
     86        createEntity
     87    };
     88
     89}
     90
     91export default useCreate;
     92}}}
     93Овој Hook го користиме за POST барања кон серверската страна. Од него постојат неколку модифицирани верзии во зависоност од тоа дали парамтерите се испраќаат во телото на барањето, како URL параметри или како променливи во патеката, но во основа се работи за иста имплементација. За разлика од useGet, тука, URL-то се испраќа како аргумент на функцијата, заедно со податоците кои треба да се испратат како параметри и состојбата на зависната променлива за која зборувавме во претходната компонент. Откако ќе се испрати POST, se враќа Promise со кој соодветно се справуваме на горенаведениот начин, со единствна разлика што во then сегментот, кога статусот означува успех, ја менуваме состојбата на зависната променлива за да се ререндерираат зависните компоненти.
     94==== useFormData
     95{{{#!javascript
     96import { useState } from 'react';
     97
     98const useFormData = (editData) => {
     99  const [formData, setData] = useState({ ...editData });
     100
     101  const onFormChange = (e) => {
     102    setData({
     103      ...formData,
     104      [e.target.name]: e.target.value,
     105    });
     106  };
     107
     108  const onCheckBoxChange = (e) => {
     109    setData((prevData) => ({
     110        ...prevData,
     111        [e.target.name]: !prevData[e.target.name],
     112    }));
     113  }
     114
     115  const setFormData = (newData) => {
     116    setData({...newData});
     117  }
     118  return {
     119    formData,
     120    onFormChange,
     121    onCheckBoxChange,
     122    setFormData
     123  };
     124};
     125
     126export default useFormData;
     127}}}
     128Во секој формулар каде што имаме кориснички влез потребно е да се справиме со него и да го проследиме до серверот во утврдената форма. Ова може да се постигне на стариот добар начин, со користење на концептот useState од React и посебна состојба за секое од input полињата. За да го поедноставиме ова, успешно имплементиравме општа функција за справување со корисничкиот влез која работи на следниот начин. Наместо посебни состојби за секое поле, чуваме состојба на еден објект, каде клучот е соодветно name атрибутот на полето, а вредноста е неговиот value. За процесирање на текстуалните полиња, при промена на вредноста одговорна е функцијата onFormChange, каде се менува состојбата на записот од објектот кој е засегнат според name атрибутот. Оваа функција се извршува на секој onChange настан испален од било која input компонента. onCheckBoxChange е ништо повеќе од специјална имплементација на onFormChange функцијата за checkbox input. Како и во претходно наведените Hook-и, и тука, референци до функциите и состојбите кои треба да бидат пристапени од другите компоненти се враќаат од функцијата.