Рубрики
Без рубрики

Как написать Cleaner React Code

Как разработчики реагирования, мы все хотим написать более чистый код, который проще и проще читать. В этом руководстве я собрал семь лучших способов, которые вы сможете начать писать Cleaner React Code сегодня, чтобы создать проекты по реагированию на строительство и просматривать ваш код намного проще. В основном,

Автор оригинала: Reed Barger.

Как разработчики реагирования, мы все хотим написать более чистый код, который проще и проще читать.

В этом руководстве я собрал семь лучших способов, которые вы сможете начать писать Cleaner React Code сегодня, чтобы создать проекты по реагированию на строительство и просматривать ваш код намного проще.

В целом, изучение того, как написать Cleaner React Code, сделает вас более ценным и в целом счастливее разработчика RACT RACK, поэтому давайте прыгнем прямо в!

1. Использовать jsx continhhands

Как вы проходите значение true для данного опоры?

В приведенном ниже примере мы используем опоры Showtitle Чтобы отобразить заголовок нашего приложения в компоненте NAVBAR.

// src/App.js

export default function App() {
  return (
    
); } function Navbar({ showTitle }) { return (
{showTitle &&

My Special App

}
) }

Нам нужно явно установить Showtitle логию правда ? Мы не! Быстрый сокращение, чтобы помнить, что любой проп, предусмотренный на компоненте, имеет значение по умолчанию True.

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

// src/App.js

export default function App() {
  return (
    
); } function Navbar({ showTitle }) { return (
{showTitle &&

My Special App

} // title shown!
) }

Другим полезным сокращением, чтобы запомнить, включает в себя проходящие строковые реквизиты. Когда вы передаете значение SPORT, это строку, вам не нужно обрушить его в фигурных скобках.

Если мы устанавливаем название нашей навары, с Название Пропор, мы можем просто включить его значение в двойных кадинатах:

// src/App.js

export default function App() {
  return (
    
); } function Navbar({ title }) { return (

{title}

) }

2. Переместите несвязанный код в отдельный компонент

Возможно, самый простой и самый важный способ написания очистителя React Code – это хорошо освещать наш код в отдельные компоненты реагирования.

Давайте посмотрим на пример ниже. Что наш код делает?

Наше приложение отображает компонент Navbar. Мы итерация по массиву постов с .карта () и отображение их заголовка на странице.

// src/App.js

export default function App() {
  const posts = [
    {
      id: 1,
      title: "How to Build YouTube with React"
    },
    {
      id: 2,
      title: "How to Write Your First React Hook"
    }
  ];

  return (
    
    {posts.map(post => (
  • {post.title}
  • ))}
); } function Navbar({ title }) { return (

{title}

); }

Как мы можем сделать этот очиститель?

Почему бы нам не аннотация код, который мы переживаем – наши посты – и отображение их в отдельном компонент, который мы позвоним FeaturedPosts.

Давайте сделаем это и посмотрите на результат:

// src/App.js

export default function App() {
 return (
    
); } function Navbar({ title }) { return (

{title}

); } function FeaturedPosts() { const posts = [ { id: 1, title: "How to Build YouTube with React" }, { id: 2, title: "How to Write Your First React Hook" } ]; return (
    {posts.map((post) => (
  • {post.title}
  • ))}
); }

Как видите, мы теперь можем просто посмотреть на наш компонент приложения. Читая имена компонентов в нем, Navbar и Featuredposts, мы точно видим, что отображается наше приложение.

3. Создать отдельные файлы для каждого компонента

Выходите из нашего предыдущего примера, мы включаем все наши компоненты в течение одного файла, файл App.js.

Подобно тому, как мы абстрактным кодом в отдельные компоненты, чтобы сделать наше приложение более читабельно, чтобы сделать наши файлы приложения более читабельными, мы можем поставить каждый компонент, который мы имеем в отдельный файл.

Это, опять же, помогает нам отдельных проблем в нашей заявке. Это означает, что каждый файл отвечает за только один компонент, и нет путаницы, где компонент исходит, если мы хотим повторно использовать его через наше приложение:

// src/App.js
import Navbar from './components/Navbar.js';
import FeaturedPosts from './components/FeaturedPosts.js';

export default function App() {
  return (
    
); }
// src/components/Navbar.js

export default function Navbar({ title }) {
  return (
    

{title}

); }
// src/components/FeaturedPosts.js

export default function FeaturedPosts() {
  const posts = [
    {
      id: 1,
      title: "How to Build YouTube with React"
    },
    {
      id: 2,
      title: "How to Write Your First React Hook"
    }
  ];

  return (
    
    {posts.map((post) => (
  • {post.title}
  • ))}
); }

Кроме того, включив каждый отдельный компонент в собственном файле, мы избегаем слишком раздутого файла файла. Мы могли бы легко увидеть наш файл app.js очень большой, если мы хотели добавить все наши компоненты в этот файл.

4. Переместить общие функции в реактивный крюк

Посмотрите на наших компонентов FeeduredPosts, давайте скажем, вместо того, чтобы отображать данные статических сообщений, мы хотим получать наши данные от API.

Мы могли бы сделать это с помощью API Fetch. Вы можете увидеть результат ниже для этого:

// src/components/FeaturedPosts.js

import React from 'react';

export default function FeaturedPosts() {
  const [posts, setPosts] = React.useState([]);  	
    
  React.useEffect(() => {
    fetch('https://jsonplaceholder.typicode.com/posts')
      .then(res => res.json())
      .then(data => setPosts(data));
  }, []);

  return (
    
    {posts.map((post) => (
  • {post.title}
  • ))}
); }

Однако, если мы хотели выполнить этот запрос на данные по нескольким компонентам?

Допустим, в дополнение к компоненту FeiguredPosts, которые мы хотели создать компонент, называемый только посты с теми же данными. Мы должны были бы скопировать логику, которую мы использовали для извлечения наших данных и вставлять его в этот компонент.

Чтобы избежать необходимости сделать это, почему мы не просто используем новый реактивный крючок, который мы могли бы позвонить UseFetchPosts :

// src/hooks/useFetchPosts.js

import React from 'react';

export default function useFetchPosts() {
  const [posts, setPosts] = React.useState([]);  	
    
  React.useEffect(() => {
    fetch('https://jsonplaceholder.typicode.com/posts')
      .then(res => res.json())
      .then(data => setPosts(data));
  }, []);

  return posts;
}

После того, как мы создали этот крючок в выделенной папке «крючков», мы можем повторно использовать ее в зависимости от того, что нам нравятся, включая наши компонент FeeduredPosts:

// src/components/FeaturedPosts.js

import useFetchPosts from '../hooks/useFetchPosts.js';

export default function FeaturedPosts() {
  const posts = useFetchPosts()

  return (
    
    {posts.map((post) => (
  • {post.title}
  • ))}
); }

5. Удалите как можно больше JavaScript с вашего JSX

Еще один очень полезный, но часто пренебрегающий способ очистить наши компоненты – это удалить столько же JavaScript из нашего JSX.

Давайте посмотрим на пример ниже:

// src/components/FeaturedPosts.js

import useFetchPosts from '../hooks/useFetchPosts.js';

export default function FeaturedPosts() {
  const posts = useFetchPosts()

  return (
    
    {posts.map((post) => (
  • { console.log(event.target, 'clicked!'); }} key={post.id}>{post.title}
  • ))}
); }

Мы пытаемся обрабатывать событие Click на одном из наших постов. Вы можете увидеть, что наш JSX становится намного сложнее читать. Учитывая, что наша функция включена в качестве встроенной функции, она скрывает цель этого компонента, а также связанных с ней функций.

Что мы можем сделать, чтобы исправить это? Мы можем извлечь встроенную функцию, подключенную к OnClick в отдельный обработчик, который мы можем дать соответствующее имя, такое как HandlePostClick Отказ

Как только мы сделаем, наш JSX снова становится читаемым:

// src/components/FeaturedPosts.js

import useFetchPosts from '../hooks/useFetchPosts.js';

export default function FeaturedPosts() {
  const posts = useFetchPosts()
  
  function handlePostClick(event) {
    console.log(event.target, 'clicked!');   
  }

  return (
    
    {posts.map((post) => (
  • {post.title}
  • ))}
); }

6. Формат встроенных стилей для менее раздутого кода

Общий шаблон для разработчиков реагирования – писать встроенные стили в их JSX. Но еще раз это делает наш код сложнее читать и сложнее писать дополнительные JSX:

// src/App.js

export default function App() {
  return (
    
); } function Navbar({ title }) { return (

{title}

) }

Мы хотим применить эту концепцию разделения опасений нашим стилям JSX, переместив наши встроенные стили в стили CSS, что мы можем импортировать на любой компонент.

Альтернативный способ переписать ваши встроенные стили – это организация их на объекты. Вы можете посмотреть, что такое шаблон будет выглядеть как ниже:

// src/App.js

export default function App() {
  const styles = {
    main: { textAlign: "center" }
  };

  return (
    
); } function Navbar({ title }) { const styles = { div: { marginTop: "20px" }, h1: { fontWeight: "bold" } }; return (

{title}

); }

7. Уменьшить сверление опор с контекстом React

Еще один необходимый шаблон для использования для ваших реактивных проектов (особенно если у вас есть общие свойства, которые вы хотите использовать повторно повторно повторно повторно повторно повторно повторно повторно использовать свои компоненты, и вы не можете написать много дубликатовных реквизитов) – использовать контекст React.

Например, если мы хотели поделиться пользовательскими данными по нескольким компонентам, вместо нескольких повторных выбросов (шаблон под названием «бурение реквизита), мы могли бы использовать функцию контекста, встроенной в библиотеку RACT.

В нашем случае, если мы хотели повторно использовать пользовательские данные по нашим компонентам Navbar и Featuredposts, все, что нам нужно сделать, это обернуть все наше время приложения в компоненте поставщика.

Далее мы можем передавать пользовательские данные вниз по значению PROP и потреблять, что контекст в наших отдельных компонентах с помощью упреждающий текст крюк:

// src/App.js

import React from "react";

const UserContext = React.createContext();

export default function App() {
  const user = { name: "Reed" };

  return (
    
      
); } // src/components/Navbar.js function Navbar({ title }) { const user = React.useContext(UserContext); return (

{title}

{user && Logout}
); } // src/components/FeaturedPosts.js function FeaturedPosts() { const posts = useFetchPosts(); const user = React.useContext(UserContext); if (user) return null; return (
    {posts.map((post) => (
  • {post.title}
  • ))}
); }

Заключение

Я надеюсь, что вы найдете это руководство полезным, когда вы пытаетесь улучшить свой собственный код React Code, чтобы облегчить чтение, и в конечном итоге более приятный для создания реагированных проектов.

Наслаждайтесь этим постом? Присоединяйтесь к React BootCamp

React Bootcamp Занимает все, что вы должны знать о изучении реагирования и связки в один комплексный пакет, включая видео, обманывать, плюс специальные бонусы.

Получить инсайдерскую информацию сотни разработчиков уже использовалось для освоения реагирования, находить работу своей мечты и контролировать свое будущее:

Нажмите здесь, чтобы быть уведомленным, когда он открывается

Оригинал: “https://www.freecodecamp.org/news/how-to-write-cleaner-react-code/”