React: рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рдмрдЪреНрдЪреЗ рдХреЛ рдХреНрд▓реЛрди рдХрд░рдирд╛ рдЙрдкрднреЛрдХреНрддрд╛ рднреНрд░рд╛рдордХ рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╣реИред

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рдореИрдВ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЪреНрдЪреЛрдВ рдХреА рдХреНрд▓реЛрдирд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рдд рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдЙрдк-рд╕рдВрджрд░реНрдн рдХреЛ рдХреНрд▓реЛрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ...

import React from 'react';
import {render} from 'react-dom';

const { Provider, Consumer} = React.createContext();

const Comp = ({children})=> <Provider>{cloneKids(children)}</Provider>;

const cloneKids=(children)=>React.Children.map(children, child =>
                           React.cloneElement(child, child.props,
                                  child.props.children&&
                                  cloneKids(child.props.children)));
render(
    <Comp><Consumer>{console.log}</Consumer></Comp>,
    document.getElementById('root')
);

рдХреЛрдб # 12241 рдХреЗ рд╕рд╛рде рдкреЗрд╢ рдХреА рдЧрдИ рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ

рдЪреЗрддрд╛рд╡рдиреА: рдПрдХ рд╕рдВрджрд░реНрдн рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдХрдИ рдмрдЪреНрдЪреЛрдВ, рдпрд╛ рдПрдХ рдмрдЪреНрдЪреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИред рдПрдХ рд╕рдВрджрд░реНрдн рдЙрдкрднреЛрдХреНрддрд╛ рдПрдХ рдПрдХрд▓ рдмрдЪреНрдЪреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдЕрдиреБрдЧрд╛рдореА рдпрд╛ рдЕрдЧреНрд░рдгреА рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдирд╣реАрдВ рд╣реИред

рдФрд░ (рдФрд░ рднреА рднреНрд░рд╛рдордХ)

TypeError: рд░реЗрдВрдбрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ React.cloneElement рдХреЛ рдХреНрд▓реЛрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рдПрдХ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред

рдЪреЗрддрд╛рд╡рдиреА рднрд╛рдЧ "рдПрдХ рдмрдЪреНрдЪрд╛ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ" рдХреЛ рдЕрдиреНрдп рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрдЪреНрдЪреЗ рдФрд░ рдПрдХ рдмрдЪреНрдЪрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рд░рд┐рдПрдХреНрдЯ рдХреЗ рдХреМрди рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдХреМрди рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ / OS рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ?

Stackblitz / Chrome 65 рдореЗрдВ 16.3.0 рдФрд░ Chrome 65 рдФрд░ Firefox 59 рдореЗрдВ 16.3.2 рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдореБрджреНрджрд╛ cloneElement (рдЗрд╕рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдЖрдк props.children (рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ) рд╕реЗ Children.map() (рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред Children.map рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд React рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╢рд╛рдпрдж Children.map рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдПрдХ рдРрд╕реА рдЪреАрдЬ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдиреЛрдб рдирд╣реАрдВ рд╣реИред

рдпрд╛ рддреЛ рдорд╛рдорд▓реЗ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреЗрдбрд╝реЛрдВ рдХреА рдХреНрд▓реЛрдирд┐рдВрдЧ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдореБрджреНрджрд╛ cloneElement (рдЗрд╕рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдЖрдк props.children (рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ) рд╕реЗ Children.map() (рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред Children.map рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд React рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╢рд╛рдпрдж Children.map рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдПрдХ рдРрд╕реА рдЪреАрдЬ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдиреЛрдб рдирд╣реАрдВ рд╣реИред

рдпрд╛ рддреЛ рдорд╛рдорд▓реЗ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреЗрдбрд╝реЛрдВ рдХреА рдХреНрд▓реЛрдирд┐рдВрдЧ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдХреБрдЫ рдмрд╛рд▓ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдореЗрдВ рджреЗрд░реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдЙрдирдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<Parent ><Child prefix-prop="string expression"></Parent>
(рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рднрд╛рд╖рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдмрд╛рд▓рдХреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛, рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреА рдХреЛрдИ рднреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред

рдмрдЪреНрдЪрд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

<Child prop={evaluate("string expression")} />

рдпрд╣ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдмрдЪреНрдЪреЛрдВ рдХрд╛ рджреМрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "рдЙрдкрд╕рд░реНрдЧ-рдкреНрд░реЛрдк" рд╕рдВрдкрддреНрддрд┐ рдХреЛ "рдкреНрд░реЛрдк" рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИред рдХреНрд▓реЛрдирд┐рдВрдЧ рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдШрдЯрдХ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИред рдмреЗрд╢рдХ рд╕рдВрджрд░реНрдн рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдХреНрд▓реЛрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЧреБрдг рдирд╣реАрдВ рд╣реИрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдлрдВрдХреНрд╢рди-рдПрдЬрд╝-рдЪрд╛рдЗрд▓реНрдб рдпрд╛ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╕рдорд╛рди (рдореВрд▓реНрдпрд╛рдВрдХрди рдореЗрдВ рджреЗрд░реА рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (рдЬреЛ HTML рдФрд░ JSP рд╕реЗ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдХреНрд╕рд░ HTML рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рднрд╛рд╖рд╛ рд╕реЗ рдкрд░реЗ рдиреМрд╕рд┐рдЦрд┐рдП рд╣реИрдВ) рдбрд┐рдЬрд╛рдЗрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╢рд╛рдпрдж рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ:

<Parent>{ context=> <Child prop={context.evaluate(x)} />}</Parent>

(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╡реЗ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рди рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ # 12689 рджреНрд╡рд╛рд░рд╛ рднреНрд░рдорд┐рдд рд╣реЛрдВрдЧреЗ)

рдФрд░ рд╡реЗ рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕ рдлреЙрд░реНрдо рдХреЛ рдирд╣реАрдВ рд╕рдордЭреЗрдВрдЧреЗ:
<Parent display={ context=> <Child prop={context.evaluate(x)} />} />

рдкреНрд░рд╕рдВрдЧ рдЙрдкрднреЛрдХреНрддрд╛ рднреА рдлрд╝рдВрдХреНрд╢рди-рдПрд╢-рдЪрд╛рдЗрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпрд╣ рдмрд╣реБрдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрднреА рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдорд╛рддрд╛-рдкрд┐рддрд╛-рдмрдЪреНрдЪреЗ рдХреА рдзрд╛рд░рдгрд╛ рдкрд░ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╕рдВрднрд╡рддрдГ рдореБрдЭреЗ рдПрдХ рдмрд╛рдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ "рдХреНрд▓реАрди" рдиреЛрдЯреЗрд╢рди рдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЗрдПрд╕рдкреА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдиреЛрдЯреЗрд╢рди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧреВрдврд╝ рд╣реИ, рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ ...

рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдореИрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдШрдЯрдХ (рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ HOC) рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИ

({context})=>
context.parent("context expression",
     context2=><Child prop={context2.evaluate("sub-expression")} context={context2} />)

рдЬрд╣рд╛рдБ рдмрдЪреНрдЪреЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╕рдВрджрд░реНрдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ () рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдПрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)

()=>
parent("context expression",
     context2=><Child prop={context2.evaluate("sub-expression")} />)

_ рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрднрд┐рднрд╛рд╡рдХ () рдПрдХ рдШрдЯрдХ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореВрд▓реНрдпрд╛рдВрдХрди () рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХ рдШрдЯрдХ рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ред

рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рдШрдЯрдХреЛрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ рдЖрджрд░реНрд╢ рд╣реЛрдЧреАред рдХреБрдЫ рдЗрд╕ рддрд░рд╣

React.getContext(Consumer, data=> ...)

рдЕрдЧрд░ рдореБрдЭреЗ рд╕рд╣реА рдпрд╛рдж рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдЬреВрдЭрдиреЗ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдХрдВрдЬрд╝реНрдпреВрдорд░.рдЯреНрд░реЗрдВрдбрд░ () рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреБрдЫ рднреА рд╕рд╛рд░реНрдердХ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдкреБрдирд╢реНрдЪ: рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рдЕрдВрдХ рдЧреБрдкреНрдд рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрддрдорд╛рди JSP рдлреЙрд░реНрдо рд╕реЗ рдХрд╛рдлреА рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмреЗрдЪ рд╕рдХрддрд╛ рд╣реВрдВ :)

<context:parent ctx="context-expression">
   HTML...<context:evaluate expr="sub-expression" />...HTML
</context:parent>

рдмрдВрдж рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рдЖрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jvorcak picture jvorcak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zpao picture zpao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zpao picture zpao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

DimitarChristoff picture DimitarChristoff  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

h1orz picture h1orz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ