You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.5 KiB
59 lines
1.5 KiB
/**
|
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|
*
|
|
* @emails react-core
|
|
*/
|
|
|
|
import MarkdownPage from 'components/MarkdownPage';
|
|
import PropTypes from 'prop-types';
|
|
import React from 'react';
|
|
import {createLinkTutorial} from 'utils/createLink';
|
|
import {sectionListTutorial} from 'utils/sectionList';
|
|
|
|
const Tutorial = ({data, location}) => {
|
|
// HACK The injected location prop doesn't update when hash changes
|
|
// This might be a gatsby issue, or a react-router/history issue,
|
|
// Or we might be using either library incorrectly.
|
|
// For now this patch keeps the hash in sync by JIT copying it from window.
|
|
// The undefined check prevents us from breaking on production build.
|
|
if (typeof window !== 'undefined' && typeof window.location !== 'undefined') {
|
|
location.hash = window.location.hash;
|
|
}
|
|
|
|
return (
|
|
<MarkdownPage
|
|
enableScrollSync
|
|
createLink={createLinkTutorial}
|
|
location={location}
|
|
markdownRemark={data.markdownRemark}
|
|
sectionList={sectionListTutorial}
|
|
titlePostfix=" – React"
|
|
/>
|
|
);
|
|
};
|
|
|
|
Tutorial.propTypes = {
|
|
data: PropTypes.object.isRequired,
|
|
};
|
|
|
|
// eslint-disable-next-line no-undef
|
|
export const pageQuery = graphql`
|
|
query TemplateTutorialMarkdown($slug: String!) {
|
|
markdownRemark(fields: {slug: {eq: $slug}}) {
|
|
html
|
|
frontmatter {
|
|
title
|
|
next
|
|
prev
|
|
}
|
|
fields {
|
|
path {
|
|
id
|
|
}
|
|
slug
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
export default Tutorial;
|
|
|