Files
freeCodeCamp/src/components/layout.js

72 lines
1.9 KiB
JavaScript
Raw Normal View History

import React, { Fragment, Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import Helmet from 'react-helmet';
import { StaticQuery, graphql } from 'gatsby';
import { fetchUser } from '../redux';
import Header from './Header';
import './layout.css';
const mapStateToProps = () => ({});
const mapDispatchToProps = dispatch => bindActionCreators({fetchUser}, dispatch);
class Layout extends Component {
constructor(props) {
super(props);
}
componentDidMount() {
this.props.fetchUser();
}
render() {
const { children, disableSettings } = this.props;
return (
<StaticQuery
query={graphql`
query SiteTitleQuery {
site {
siteMetadata {
title
}
}
}
`}
render={data => (
<Fragment>
<Helmet
meta={[
{ name: 'description', content: 'Sample' },
{ name: 'keywords', content: 'sample, something' }
]}
title={data.site.siteMetadata.title}
>
<html lang='en' />
<link href='https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' rel='stylesheet' />
</Helmet>
<Header disableSettings={true} siteTitle={data.site.siteMetadata.title} />
<div
style={{
margin: '38px auto 0',
maxWidth: 960,
padding: '0px 1.0875rem 1.45rem',
paddingTop: 0
}}
>
{children}
</div>
</Fragment>
)}
/>
);
}
}
Layout.propTypes = {
children: PropTypes.node.isRequired
};
export default connect(mapStateToProps, mapDispatchToProps)(Layout);