Projeto Reflix

Anotações do desenvolvimento do projeto com base no Aluraflix


Link repositório reflix: https://github.com/NetoPaiva/reflix/


Etapa 02 - Criar componentes

Estrutura básica do componente no projeto

Criar pastas e arquivos referentes aos componentes

> src
	> components
		> Menu
			- index.js
			- Menu.css

Se for desenvolver o projeto com styled-components utilizar estrutura específica, apenas com o index.js na pasta do componente, que conterá tanto o HTML quanto o CSS.


Estrutura básica do index.js do componente

No arquivo Menu/index.js

import  React  from  "react";
import  './Menu.css';

function  Menu() {
	return(
	
	);
}

export  default  Menu;

Essa é a estrutura básica de componentes React. Toda a definição HTML do componente será declarada dentro do return da função.


Estrutura HTML do componente Menu

No arquivo Menu/index.js

return (
	<nav  className="menu">
		<a  href="/">
			<img  src=""  alt=""  />
		</a>
		<a  className="botao-menu"  href="/">Novo vídeo</a>
	</nav>
);

Incluir pasta de imagens do projeto

> src
	> assets
		> img

A pasta assets guardará todos os recursos adicionais do projeto, como imagens, fontes e outros.


Criar Logotipo


No arquivo Menu/index.js

import  Logo  from  '../../assets/img/devflix-logo.png';
...
return (
	<nav  className="menu">
		<a  href="/">
			<img  className="logo"  src={Logo}  alt="Logotipo Devflix"  />
		</a>
		<a  className="botao-menu"  href="/">Novo vídeo</a>
	</nav>
);

Definir estilo do componente Menu

No arquivo Menu.css


Código CSS completo do componente Menu

body {
	--bodyPaddingTop: 94px;
	padding-top: var(--bodyPaddingTop);
}

.menu {
	display: flex;
	justify-content: space-between;
	align-items: center;

	background: var(--black);
	border-bottom: 2px  solid  var(--primary);

	width: 100%;
	height: 94px;
	z-index: 100;

	position: fixed;
	top: 0;
	left: 0;
	right: 0;

	padding-left: 5%;
	padding-right: 5%;
}

.logo {
	max-width: 168px;
}

.button-menu {
	display: inline-block;

	border: 1px  solid  var(--white);
	border-radius: 5px;
	box-sizing: border-box;

	font-style: normal;
	font-weight: bold;
	font-size: 16px;
	color: var(--white);
	outline: none;
	text-decoration: none;

	cursor: pointer;

	padding: 16px  24px;

	transition: opacity  .3s;
}

.button-menu:hover,
.button-menu:focus {
	opacity: .5;
}

@media screen and (max-width: 800px) {

	body {
		--bodyPaddingTop: 40px;
		padding-top: var(--bodyPaddingTop);
	}

	.menu {
		height: 40px;
		justify-content: center;
	}

	.logo {
		max-width: 105px;
	}

	a.button-menu {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;

		background: var(--primary);
		border-radius: 0;
		border: 0;

		text-align: center;
	}

}

Incluir componente na aplicação

No arquivo src/App.js

O VSCode faz a importação automática do componente ao declarar a tag Menu. Caso esta ação automática não ocorra, a importação deverá ser feita manualmente, digitando no início do arquivo, abaixo da linha de importação do React:

 import  Menu  from  './components/Menu';

Código do arquivo src/App.js

import  React  from  'react';
import  Menu  from  './components/Menu';

function  App() {
	return (
		<div>
			<Menu  />
			<h1>Hello, World!!</h1>
		</div>
	);
}

export  default  App;

Estrutura atualizada do projeto

> reflix
	> node_modules
	> public
		- index.html
		- manifest.json
		- robots.txt
	> src
		> assets
			> img
				- devflix-logo.png
		> components
			> Menu
				- index.js
				- Menu.css
		- App.js
		- index.css
		- index.js
	- .gitignore
	- package.json
	- README.md

Registrar etapa do projeto


( --> fim etapa 02 <-- )