ReactJS Templates
Construindo uma Plataforma de Blogging SPA com ReactJS e Back4App
27 min
1\ introdução este tutorial irá guiá lo pelo processo de construção de uma aplicação de página única (spa) completa para uma plataforma de blog usando reactjs como frontend e back4app como backend vamos cobrir tudo, desde a configuração do seu ambiente de desenvolvimento, gerenciamento de estado global com redux, implementação de roteamento e navegação, até a realização de operações crud com back4app objetivo criar uma plataforma de blog totalmente funcional onde os usuários possam criar, editar e excluir postagens de blog, e os leitores possam visualizar e comentar nas postagens esta aplicação utilizará reactjs para o frontend e back4app para operações de backend principais recursos autenticação de usuário criação, edição e exclusão de postagens visualização de postagens e comentários gerenciamento de estado global com redux roteamento e navegação usando react router pré requisitos conhecimento básico de javascript, reactjs e redux uma conta ativa no back4app node js e npm instalados no seu ambiente local 2\ configuração inicial 2 1 configurando o projeto reactjs passo 1 crie um novo projeto react usando create react app passo 2 inicie o servidor de desenvolvimento 2 2 configurando o back4app passo 1 faça login na sua conta back4app e crie uma nova aplicação passo 2 no painel do back4app, navegue até "core > browser" e crie as seguintes classes post (para armazenar postagens de blog) comment (para armazenar comentários em postagens) passo 3 obtenha seu id de aplicação e chave javascript na seção "configurações do app > segurança & chaves" 2 3 instalando pacotes necessários instale as dependências necessárias para a integração do react, redux e back4app npm install parse @reduxjs/toolkit react redux react router dom 2 4 configurando o sdk do parse passo 1 crie um arquivo chamado parseconfig js na pasta src e configure o sdk do parse import parse from 'parse'; parse initialize("your app id", "your javascript key"); parse serverurl = 'https //parseapi back4app com/'; export default parse; 3\ desenvolvimento da plataforma de blogging 3 1 estrutura do projeto organize o projeto com a seguinte estrutura src/ \| components/ \| | postlist js \| | postdetails js \| | postform js \| | commentlist js \| redux/ \| | store js \| | postslice js \| | commentslice js \| parseconfig js \| app js \| index js 3 2 implementando redux para gerenciamento de estado global passo 1 configurar a loja redux em redux/store js import { configurestore } from '@reduxjs/toolkit'; import postreducer from ' /postslice'; import commentreducer from ' /commentslice'; export const store = configurestore({ reducer { posts postreducer, comments commentreducer, }, }); passo 2 criar um slice para gerenciar posts em redux/postslice js import { createslice, createasyncthunk } from '@reduxjs/toolkit'; import parse from ' /parseconfig'; export const fetchposts = createasyncthunk('posts/fetchposts', async () => { const query = new parse query('post'); const results = await query find(); return results map(post => ({ id post id, title post get('title'), content post get('content'), })); }); const postslice = createslice({ name 'posts', initialstate { list \[], status null, }, reducers {}, extrareducers { \[fetchposts fulfilled] (state, action) => { state list = action payload; state status = 'success'; }, }, }); export default postslice reducer; passo 3 criar um slice para gerenciar comentários em redux/commentslice js import { createslice, createasyncthunk } from '@reduxjs/toolkit'; import parse from ' /parseconfig'; export const fetchcomments = createasyncthunk('comments/fetchcomments', async (postid) => { const query = new parse query('comment'); query equalto('post', { type 'pointer', classname 'post', objectid postid }); const results = await query find(); return results map(comment => ({ id comment id, content comment get('content'), postid postid, })); }); const commentslice = createslice({ name 'comments', initialstate { list \[], status null, }, reducers {}, extrareducers { \[fetchcomments fulfilled] (state, action) => { state list = action payload; state status = 'success'; }, }, }); export default commentslice reducer; 3 3 implementando roteamento com react router passo 1 configure o roteamento em app js import { browserrouter as router, route, switch } from 'react router dom'; import postlist from ' /components/postlist'; import postdetails from ' /components/postdetails'; import postform from ' /components/postform'; function app() { return ( \<router> \<switch> \<route path="/" exact component={postlist} /> \<route path="/post/\ id" component={postdetails} /> \<route path="/new post" component={postform} /> \</switch> \</router> ); } export default app; 3 4 criando componentes passo 1 crie o postlist componente para exibir todos os posts do blog import react, { useeffect } from 'react'; import { usedispatch, useselector } from 'react redux'; import { fetchposts } from ' /redux/postslice'; import { link } from 'react router dom'; const postlist = () => { const dispatch = usedispatch(); const posts = useselector(state => state posts list); useeffect(() => { dispatch(fetchposts()); }, \[dispatch]); return ( \<div> \<h1>blog posts\</h1> \<link to="/new post">create new post\</link> \<ul> {posts map(post => ( \<li key={post id}> \<link to={`/post/${post id}`}>{post title}\</link> \</li> ))} \</ul> \</div> ); }; export default postlist; passo 2 crie o postdetails componente para mostrar os detalhes de uma postagem específica import react, { useeffect } from 'react'; import { useparams } from 'react router dom'; import { usedispatch, useselector } from 'react redux'; import { fetchcomments } from ' /redux/commentslice'; const postdetails = () => { const { id } = useparams(); const dispatch = usedispatch(); const comments = useselector(state => state comments list); useeffect(() => { dispatch(fetchcomments(id)); }, \[dispatch, id]); return ( \<div> \<h1>post details\</h1> \<p>comments \</p> \<ul> {comments map(comment => ( \<li key={comment id}>{comment content}\</li> ))} \</ul> \</div> ); }; export default postdetails; passo 3 crie o postform componente para criar e editar postagens import react, { usestate } from 'react'; import parse from ' /parseconfig'; import { usehistory } from 'react router dom'; const postform = () => { const \[title, settitle] = usestate(''); const \[content, setcontent] = usestate(''); const history = usehistory(); const handlesubmit = async (e) => { e preventdefault(); const post = parse object extend('post'); const post = new post(); post set('title', title); post set('content', content); try { await post save(); history push('/'); } catch (error) { console error('error creating post ', error); } }; return ( \<div> \<h1>create new post\</h1> \<form onsubmit={handlesubmit}> \<div> \<label>title\</label> \<input type="text" value={title} onchange={(e) => settitle(e target value)} /> \</div> \<div> \<label>content\</label> \<textarea value={content} onchange={(e) => setcontent(e target value)} /> \</div> \<button type="submit">submit\</button> \</form> \</div> ); }; export default postform; 4\ testes e implantação 4 1 testando a aplicação passo 1 teste a aplicação localmente para garantir que todos os recursos estão funcionando teste a criação, edição e exclusão de posts verifique se os comentários estão sendo exibidos corretamente para cada post teste a navegação entre diferentes rotas 4 2 construindo a aplicação para produção passo 1 construa a aplicação para produção npm run build passo 2 implemente a aplicação construída em um serviço de hospedagem como back4app containers 4 3 configurando o back4app para produção back4app já é um ambiente pronto para produção, mas você pode revisar seu código e atualizar quaisquer variáveis de ambiente e chaves necessárias 5\ conclusão resumo este tutorial guiou você na criação de uma plataforma de blog completa spa usando reactjs e back4app você aprendeu como configurar e configurar um backend no back4app, gerenciar o estado global com redux, implementar roteamento com react router e realizar operações crud esta plataforma agora pode ser expandida com recursos adicionais, como autenticação de usuário, sistemas de comentários avançados e mais próximos passos explore adicionar autenticação de usuário com back4app aprimore o sistema de comentários com atualizações em tempo real implemente recursos de seo para melhorar a visibilidade nos motores de busca 6\ código fonte e recursos adicionais repositório github forneça um link para o código fonte completo da aplicação no github recursos adicionais documentação do reactjs https //reactjs org/docs/getting started html documentação do redux https //redux js org/ documentação do react router https //reactrouter com/ documentação do back4app https //www back4app com/docs 7\ faq / solução de problemas problemas comuns erro ao conectar ao back4app verifique seu id de aplicação e chave javascript estado do redux não atualizando certifique se de que suas ações e reducers estão configurados corretamente suporte se você encontrar algum problema, pode entrar em contato com o suporte do back4app ou fazer perguntas em comunidades de desenvolvedores relevantes