Anotações do desenvolvimento do projeto com base no Aluraflix
Link repositório reflix: https://github.com/NetoPaiva/reflix/
Criar pastas e arquivos referentes aos componentes
src
components
components
Menu
Menu
criar os arquivos
index.js
Menu.css
> src
> components
> Menu
- index.js
- Menu.css
Se for desenvolver o projeto com
styled-components
utilizar estrutura específica, apenas com oindex.js
na pasta do componente, que conterá tanto o HTML quanto o CSS.
index.js
do componenteNo arquivo Menu/index.js
React
return
da funçãoimport 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 doreturn
da função.
HTML
do componente Menu
No arquivo Menu/index.js
return
da função Menu
nav
com a classe menu
nav
conterá duas tags de link a
/
)img
com os atributos src
e alt
botao-menu
/
)return (
<nav className="menu">
<a href="/">
<img src="" alt="" />
</a>
<a className="botao-menu" href="/">Novo vídeo</a>
</nav>
);
src
assets
assets
img
> src
> assets
> img
A pasta
assets
guardará todos os recursos adicionais do projeto, como imagens, fontes e outros.
src/assets/img/devflix-logo.png
No arquivo Menu/index.js
Menu.css
Logo
indicando o caminho do arquivoimg
definir os valores dos atributos:
className
com o seletor logo
src
com a propriedade Logo
alt
com o texto explicativo da imagemimport 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>
);
Menu
No arquivo Menu.css
body
menu
logo
button-menu
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;
}
}
No arquivo src/App.js
return
da função "App"
<Menu />
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 doReact
:
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;
> 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
( --> fim etapa 02 <-- )