Skip to content

Translate Context #59

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Feb 18, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 67 additions & 70 deletions content/docs/context.md

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions examples/context/motivation-problem.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ class App extends React.Component {

function Toolbar(props) {
// highlight-range{1-4,7}
// The Toolbar component must take an extra "theme" prop
// and pass it to the ThemedButton. This can become painful
// if every single button in the app needs to know the theme
// because it would have to be passed through all components.
// Toolbar コンポーネントは外部から "theme" プロパティを受け取り、
// プロパティを ThemedButton へ渡します。
// アプリ内の各ボタンがテーマを知る必要がある場合、
// プロパティは全てのコンポーネントを通して渡される為、面倒になります。
return (
<div>
<ThemedButton theme={props.theme} />
Expand Down
22 changes: 11 additions & 11 deletions examples/context/motivation-solution.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
// highlight-range{1-4}
// Context lets us pass a value deep into the component tree
// without explicitly threading it through every component.
// Create a context for the current theme (with "light" as the default).
// コンテクストを使用すると、全てのコンポーネントを明示的に通すことなしに
// コンポーネントツリーの深くまで値を渡すことができます。
// 現在のテーマ(デフォルトは "light")の為のコンテクストを作成します。
const ThemeContext = React.createContext('light');

class App extends React.Component {
render() {
// highlight-range{1-3,5}
// Use a Provider to pass the current theme to the tree below.
// Any component can read it, no matter how deep it is.
// In this example, we're passing "dark" as the current value.
// 以下のツリーへ現在のテーマを渡すためにプロバイダを使用します。
// どんな深さでも、どのようなコンポーネントでも読み取ることができます。
// このサンプルでは、"dark" を現在の値として渡しています。
return (
<ThemeContext.Provider value="dark">
<Toolbar />
Expand All @@ -19,8 +19,8 @@ class App extends React.Component {
}

// highlight-range{1,2}
// A component in the middle doesn't have to
// pass the theme down explicitly anymore.
// 間のコンポーネントはもう明示的にテーマを
// 下に渡す必要はありません。
function Toolbar(props) {
return (
<div>
Expand All @@ -31,9 +31,9 @@ function Toolbar(props) {

class ThemedButton extends React.Component {
// highlight-range{1-3,6}
// Assign a contextType to read the current theme context.
// React will find the closest theme Provider above and use its value.
// In this example, the current theme is "dark".
// 現在のテーマのコンテクストを読むために、contextType に指定します。
// React は上位の最も近いテーマプロバイダを見つけ、その値を使用します。
// この例では、現在のテーマは "dark" です。
static contextType = ThemeContext;
render() {
return <Button theme={this.context} />;
Expand Down
8 changes: 4 additions & 4 deletions examples/context/multiple-contexts.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Theme context, default to light theme
// テーマのコンテクスト、デフォルトのテーマは light
const ThemeContext = React.createContext('light');

// Signed-in user context
// サインイン済みのユーザのコンテクスト
const UserContext = React.createContext({
name: 'Guest',
});
Expand All @@ -10,7 +10,7 @@ class App extends React.Component {
render() {
const {signedInUser, theme} = this.props;

// App component that provides initial context values
// コンテクストの初期値を与える App コンポーネント
// highlight-range{2-3,5-6}
return (
<ThemeContext.Provider value={theme}>
Expand All @@ -31,7 +31,7 @@ function Layout() {
);
}

// A component may consume multiple contexts
// コンポーネントは複数のコンテクストを使用する可能性があります
function Content() {
// highlight-range{2-10}
return (
Expand Down
8 changes: 4 additions & 4 deletions examples/context/theme-detailed-app.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {ThemeContext, themes} from './theme-context';
import ThemedButton from './themed-button';

// An intermediate component that uses the ThemedButton
// ThemedButtonを使用する中間のコンポーネント
function Toolbar(props) {
return (
<ThemedButton onClick={props.changeTheme}>
Expand Down Expand Up @@ -29,9 +29,9 @@ class App extends React.Component {

render() {
//highlight-range{1-3}
// The ThemedButton button inside the ThemeProvider
// uses the theme from state while the one outside uses
// the default dark theme
// ThemeProvider 内の ThemedButton ボタンは
// state からのテーマを使用し、外側では
// デフォルトの dark テーマを使用します
//highlight-range{3-5,7}
return (
<Page>
Expand Down
2 changes: 1 addition & 1 deletion examples/context/theme-detailed-theme-context.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ export const themes = {

// highlight-range{1-3}
export const ThemeContext = React.createContext(
themes.dark // default value
themes.dark // デフォルトの値
);
6 changes: 3 additions & 3 deletions examples/context/updating-nested-context-app.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ class App extends React.Component {
};

// highlight-range{1-2,5}
// State also contains the updater function so it will
// be passed down into the context provider
// state には更新する関数も含まれているため、
// コンテクストプロバイダにも渡されます。
this.state = {
theme: themes.light,
toggleTheme: this.toggleTheme,
Expand All @@ -25,7 +25,7 @@ class App extends React.Component {

render() {
// highlight-range{1,3}
// The entire state is passed to the provider
// state は全部プロバイダへ渡されます
return (
<ThemeContext.Provider value={this.state}>
<Content />
Expand Down
4 changes: 2 additions & 2 deletions examples/context/updating-nested-context-context.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Make sure the shape of the default value passed to
// createContext matches the shape that the consumers expect!
// createContextに渡されるデフォルトの値の形が、
// コンシューマが期待する形と一致することを確認してください!
// highlight-range{2-3}
export const ThemeContext = React.createContext({
theme: themes.dark,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import {ThemeContext} from './theme-context';

function ThemeTogglerButton() {
// highlight-range{1-2,5}
// The Theme Toggler Button receives not only the theme
// but also a toggleTheme function from the context
// ThemeTogglerButton は theme だけでなく、
// toggleTheme 関数もコンテクストから受け取ります
return (
<ThemeContext.Consumer>
{({theme, toggleTheme}) => (
Expand Down