Автор оригинала: 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/”