Skip to content

Instantly share code, notes, and snippets.

@aspirinchaos
Created April 18, 2021 23:06
Show Gist options
  • Select an option

  • Save aspirinchaos/d8bb5a84fcebaa27b6f0c111ba81990c to your computer and use it in GitHub Desktop.

Select an option

Save aspirinchaos/d8bb5a84fcebaa27b6f0c111ba81990c to your computer and use it in GitHub Desktop.
Meteor + React server render
export const replacePattern = (template, data) => {
const _pattern = /\{\{(.*?)\}\}/g; // {{property}}
return template.replace(_pattern, (match, token) => data[token] || '');
};
import React from 'react';
import PropTypes from 'prop-types';
import RDS from 'react-dom/server';
import { replacePattern } from './helpers';
import MyComponent from './MyComponent'; // a react component stored on server, renders a list of users
const renderOnServer = (_id) => {
const users = Meteor.users.find().fetch();
const data = {
content: RDS.renderToStaticMarkup(<MyComponent users={users} />),
title: 'MyComponent render',
};
return replacePattern(template, data);
};
<html>
<head>
<meta charset="utf-8">
<title>{{title}}</title>
<style>
// css styles
</style>
</head>
<body>
<h1>{{title}}</h1>
{{content}}
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment