furdzik / IF.Kamisama

Complete Style Guide for writing frontend code by Izabela Furdzik [WIP]
MIT License
0 stars 0 forks source link

[React] The best order of imports #1

Open furdzik opened 3 years ago

furdzik commented 3 years ago
furdzik commented 3 years ago

[PROPOSITION]

The best order I come up with:

external:

configuration, types and constants:

main parts:

data and API:

utils, hooks:

app general styles and assets:

app general langs:

components and containers (also @contexts):

component internal utils and stuff:

* - is optional

furdzik commented 3 years ago

TODO: Additionally, formating!

furdzik commented 3 years ago

In case of import uses of hooks is import as { useState } etc. React.createElement and React.Fragment use form React.

furdzik commented 3 years ago

TODO: Compose all imports in one file and correct order

furdzik commented 3 years ago

EXAMPLES:

import { fetchSome, fetchSomeDictionary, updateSome } from '@api';

import { getLanguageType } from '@utils/getLanguageType';

import { openAlert } from '@containers/LayoutContainer/LayoutContainer.reducer';

import { prepereSomeToSend } from './utils';

import messages from './SomeSection.messages';

const initialState = {
 ...
};

const actionTypes = {
  ...
};
import React, { useContext } from 'react';
import PropTypes from 'prop-types';

import { IMAGES_SIZES } from '@config/constants';

import { eventsShape } from '@shapes/EventsSection.shape';

import { useBreakpoint } from '@utils/hooks/useBreakpoint';
import { getCdnResizeParams } from '@utils/getCdnResizeParams';

import { EmergencyModeContext } from '@utils/contexts/emergencyModeContext';
import { checkIfEventHasEndedAlready } from '@utils/checkIfEventHasEndedAlready';

import { breakpoints } from '@styles/basic';

import Section from '@components/ui/Section';
import ShadowBox from '@components/ui/ShadowBox';
import PersonalInfo from '@components/ui/PersonalInfo';
import Avatar from '@components/Avatar';
import LiveIndicator from '@components/LiveIndicator';
import SaveEventSeat from '@components/SaveEventSeat';
import EventsScheduleHeader from '@components/EventsScheduleHeader';