#VemProReact
Correção da atividade!
const authLink = setContext((_, { headers }) => {
const lotacao = localStorage.getItem('lotacao');
const token = localStorage.getItem('jep_token');
return {
headers: {
...headers,
lotacao,
authorization: `Bearer ${token}`
}
}
});apolloClient.js:
#VemProReact
Correção da atividade!
File structure:
#VemProReact
Correção da atividade!
const [openDadosPessoais, setOpenDadosPessoais] = useState(true);
const [openDadosContato, setOpenDadosContato] = useState(false);
const [openDadosFuncionais, setOpenDadosFuncionais] = useState(false);
...
<Collapse
expanded={openDadosPessoais}
onChange={() => setOpenDadosPessoais(open => !open)}
>
<CollapseTitle positionIcon="end">
Dados principais
</CollapseTitle>
<CollapseContent>
<Grid container spacing={3}>
<Grid item xs={1}>
<Input
...Dados.js:
#VemProReact
Correção da atividade!
const generoOptions = [
{ value: "FEMININO", label: "Feminino" },
{ value: "MASCULINO", label: "Masculino" }
];
...
<Select
name="genero"
label="Gênero"
placeholder="genero"
size="small"
options={generoOptions}
value={generoOptions.find(({ value }) => usuarioForm?.genero === value) ?? null}
onChange={e => {
setUsuarioForm(currentUsuario => ({
...currentUsuario,
genero: e.value
}));
}}
disabled={loading}
/>
...Dados.js:
#VemProReact
Correção da atividade!
#VemProReact
High Order Components
Na teoria:
#VemProReact
High Order Components
Na prática:
import { withStyles } from '@bayon/commons';
...
const Dados = ({ classes, usuario }) => {
...
};
...
export default withStyles(styles)(Dados);import { withTranslation } from '@bayon/i18n';
import { withStyles, withToast } from '@bayon/commons';
const withCommon = (styles) => (Component) =>
withToast(withTranslation(['common'])(withStyles(styles)(Component)));
export default withCommon;#VemProReact
Bayon Styles API
Referências para estudos:
#VemProReact
Live Debug!
🤘
#VemProReact
Bayon Scripts
yarn add --dev @bayon/scriptsPara instalar:
Referências para estudos:
#VemProReact
Bayon Scripts
Para usar:
...
"scripts": {
"start": "bayon-scripts-lib start",
"build": "bayon-scripts-lib build",
"lint": "bayon-scripts-lib lint",
"test": "bayon-scripts-lib test",
"coverage": "bayon-scripts-lib test --coverage"
},
...{
"singleQuote": true
}package.json
.prettierrc
#VemProReact
Bayon Smarts
Referências para estudos:
yarn add @bayon/smarts @bayon/i18n @react-keycloak/web keycloak-js react-router-domPara instalar:
#VemProReact
Bayon i18n
yarn add @bayon/i18nPara instalar:
Arquivo de referência das traduções:
Referências para estudos:
#VemProReact
Bayon i18n
import { withTranslation } from '@bayon/i18n';
...
const Dados = ({ t, usuario }) => {
...<p>{t('CHAVE_DA_TRADUCAO')}</p>
};
...
export default withTranslation(['common'])(Dados)Para usar:
import { BayonI18NextProvider } from '@bayon/i18n';
...
<BayonI18NextProvider>
<App />
</BayonI18NextProvider>
...#VemProReact
Dúvidas?
#VemProReact
Atividade!
#VemProReact
Obrigado!