Chap03 -> Creating function-based component -> Children props

master
Jason Zhu 2022-03-26 14:10:10 +11:00
parent dafd006124
commit affd03b580
3 changed files with 25 additions and 3 deletions

View File

@ -1,13 +1,15 @@
import React from 'react'; import React from 'react';
import { PageTitle } from './PageTitle';
import { Page } from './Page';
import { QuestionList } from './QuestionList'; import { QuestionList } from './QuestionList';
import { getUnansweredQuestions } from './QuestionsData'; import { getUnansweredQuestions } from './QuestionsData';
export const HomePage = () => ( export const HomePage = () => (
<div> <Page>
<div> <div>
<h2>Unanswered Questions</h2> <PageTitle>Unanswered Questions</PageTitle>
<button>Ask a question</button> <button>Ask a question</button>
</div> </div>
<QuestionList data={getUnansweredQuestions()} /> <QuestionList data={getUnansweredQuestions()} />
</div> </Page>
); );

View File

@ -0,0 +1,15 @@
import React from 'react';
import { PageTitle } from './PageTitle';
interface Props {
title?: string;
children: React.ReactNode;
}
export const Page = ({ title, children }: Props) => (
<div>
{title && <PageTitle>{title}</PageTitle>}
{children}
{/* Component nested within Page component will be rendere here */}
</div>
);

View File

@ -0,0 +1,5 @@
import React from 'react';
interface Props {
children: React.ReactNode;
}
export const PageTitle = ({ children }: Props) => <h2>{children}</h2>;