Christian Warmling Medeiros
chat_sw's Introduction
chat_sw's People
chat_sw's Issues
font-awesome como dependencia normal
Opa,
Analisando teu package.json vi que o font-awesome
está com dependencia de dev ao invés de depencia normal.
Lines 34 to 37 in c2530bc
Recomendo mover para bloco de dependencias normais, já que a mesma será embutida e publicada junto com o build de produção do projeto.
Usar toda a API do React
Opa,
Chris eu gostei muito da tua iniciativa de usar React nessa tarefa, ficou muito bom o teste.
Como sugestão te deixo a missão de sempre tentar usar ao máximo a API do React. Já que já baixou todo o pacote do React, já levantou todo um setup baseado em create-react-app
porque não usar ao máximo o poder do React?!
Neste trecho de código consigo ver que estais "misturando" JavaScript puro (baseado em DOM classico/vanilla) com os conceitos de React:
Lines 7 to 20 in c2530bc
A idéia do React é trabalhar com states
e usar o super-poderoso motor de renderização do React para gerar as mensagens de chat.
Neste link encontra-se o seu projeto "reformulado":
https://codesandbox.io/s/chat-sw-chriswarmling-y83lj?file=/src/App.js
Se tu acessares o link acima irá ver o teu chat funcionando 100% React "puro". E aqui abaixo segue o meu código de sugestão:
import React, { useState, useEffect } from "react";
import TextareaAutosize from "react-textarea-autosize";
import "./App.css";
import "font-awesome/css/font-awesome.css";
function App() {
// array/lista de mensagens do arquivo do chat
// variável e método de atualização
const [chatMsgs, setChatMsgs] = useState([
{ msg: "Olá, em que posso ajudar?", className: "chatbox-bot" }
]);
// mensagem que está sendo digitada neste momento
// variável e método de atualização
const [msg, setMsg] = useState("");
// função responsável por adicionar uma nova mensagem
// no array/lista de mensagens do arquivo do chat
function sendMsg(event) {
event.preventDefault();
// boa validação...
if (msg === "") {
alert("Escreva Algo");
return;
}
// adicionando uma nova mensagem com a classe "chatbox-user"
setChatMsgs([...chatMsgs, { msg, className: "chatbox-user" }]);
// limpando o campo de mensagem digitada
setMsg("");
}
// sempre que nova mensagem entrar (ou sair) do array de mensagens
// a barra de rolagem do chat será atualizada...
useEffect(() => {
const rolar = document.getElementById("chatbox-scroll");
if (!!rolar) rolar.scrollTop = rolar.scrollHeight;
}, [chatMsgs]);
// no meio do JSX abaixo existe o bloco em que pegamos
// mensagem por mensagem do array/lista de mensagens
// e renderizamos em tela com uma DIV e também sua
// respectiva classe
return (
<div>
<div className="chatbox">
<div className="chatbox-title">
<span>Chat Soluções Web</span>
</div>
<div id="chatbox-scroll" className="chatbox-chat">
{chatMsgs.map((item, k) => (
<div key={k} className={item.className}>
<span>{item.msg}</span>
</div>
))}
</div>
<div className="chatbox-send">
<TextareaAutosize
className="chatbox-input"
value={msg}
onChange={event => setMsg(event.target.value)}
/>
<i className={`fa fa-lg fa-paper-plane`} onClick={sendMsg} />
</div>
</div>
</div>
);
}
export default App;
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.