3
respostas

É possível usar um componente React num projeto que não depende dessa biblioteca?

Oi, gente; não sei se esse é o melhor local para tirar dúvidas quanto a isso mas a minha dúvida é em saber se é possível criar e exportar componentes React totalmente auto suficientes em que você pode importar num projeto em Vue ou até em html puro.

Eu vi que é fácil "compilar" um componente e pegar o resultado numa string html assim:

const React = require('react');
const ReactDOMServer = require('react-dom/server');
const { Button } = require('semantic-ui-react');

function Btn(props, text) {

  const button = React.createElement(
    Button,
    props,
    text
  );

  const htmlButton = ReactDOMServer.renderToString(button);

  return htmlButton;
}

module.exports = Btn;

Isso foi um teste rápido em commonJs mesmo em que eu compilo um botão do semantic-ui-react e retorno o elemento html como string.

Eu peguei essa string e passei como parâmetro para uma página ejs:

const router = require('express').Router();

const Btn = require('./components/Btn');

router.get('/button', (req, res) => {
  const button = Btn(
    {
      color: 'orange',
      onClick: () => { console.log('clicked!'); }
    },
    'Click here',
  );
  res.render('home', { button });
});

module.exports = router;

O botão é renderizado na página ejs com a cor certa, mas pelo modo como o React funciona, as se perdem já que eu não faço uso do React no frontend desse projeto ejs.

A dúvida seria saber se é possível compilar um componente com todo o estilo e lógica embutidos e exportar isso

3 respostas

Fala ai Douglas, tudo bem? Sim, isso é possível e tem N maneiras de ser feito.

Existem bibliotecas para o Vue que te deixam importar componentes ou códigos feitos em React:

Mas, o React quando buildado nada mais é do que um arquivo e códigos JavaScript, ou seja, isso é agnóstico de bibliotecas ou frameworks.

É possível utilizar React em sites estáticos com JS puro:

https://www.youtube.com/watch?v=y5B0MXmt428

Espero ter ajudado.

Ah, legal! Vou dar uma olhada nesse material!

Valeu!

Magina Douglas, sempre que precisar não deixe de criar suas dúvidas.

Caso a dúvida tenha sido solucionada, não esqueça de marcar o tópico como solucionado, assim conseguimos ajudar outros alunos com problemas iguais ou parecidos.

Abraços e bons estudos.