todos-contra-el-fuego-web/imports/ui/pages/Page/Page.js
vjrj 4ddaa0d8ec cleanup: defaultProps -> JS default params on our function components
React 19 drops defaultProps on function components. Converted the 9 of
ours that used it (App, Navigation, ReSendEmail, Reconnect, OAuthLoginButton,
PageHeader, Page, EditDocument, EditSubscription) to destructured default
params; App defaults userId/emailAddress in its withTracker instead (it
spreads {...props} widely). Class components keep defaultProps (still
supported). The only defaultProps warnings left are from the react-share
npm package (CreatedButton/Icon), not our code. REST smoke byte-identical.
2026-07-21 13:54:02 +02:00

46 lines
1.2 KiB
JavaScript

import React from 'react';
import PropTypes from 'prop-types';
import { Meteor } from 'meteor/meteor';
import { withTracker } from 'meteor/react-meteor-data';
import { ReactiveVar } from 'meteor/reactive-var';
import i18n from '/imports/startup/client/i18n';
import PageHeader from '../../components/PageHeader/PageHeader';
import Content from '../../components/Content/Content';
import { Helmet } from 'react-helmet-async';
import './Page.scss';
const Page = ({ title, subtitle = '', content }) => (
<div className="Page">
<Helmet>
<meta charSet="utf-8" />
<title>{i18n.t('AppName')}: {title}</title>
</Helmet>
<PageHeader title={title} subtitle={subtitle} />
<Content content={content} />
</div>
);
Page.propTypes = {
title: PropTypes.string.isRequired,
subtitle: PropTypes.string,
content: PropTypes.string.isRequired
};
const pageContent = new ReactiveVar('');
export default withTracker(({ content, page }) => {
window.scrollTo(0, 0); // Force window to top of page.
Meteor.call('utility.getPage', page, i18n.language, (error, response) => {
if (error) {
console.warn(error);
} else {
pageContent.set(response);
}
});
return {
content: content || pageContent.get()
};
})(Page);