- ã¯ããã«
- ããããæ¸ãæ¹ãæ £ããªã
- Stateã£ã¦ãªã«ï¼ï¼
- Contextã£ã¦ãã£ã¡ã便å©ããã
- ãããã«
ã¯ããã«
ããã«ã¡ã¯ãæ°å
¥ç¤¾å¡ã®åå°ã§ãã
ã¾ããããã°ãåææã«2æ¬åºãã¨ã¯æã£ã¦ãã¿ã¾ããã§ããããããæè¡ç³»ã§ãããæ¸ãå§ããåã¯ãã¨ã¦ãè
°ãéãã£ãã®ã§ãããããæ¸ãå§ãã¦ã¿ãã¨ããããæ¥½ããã¦ãçãæ¢ã¾ãã¾ããã§ããï¼è¨ã£ã¦ã¿ããã£ãã ãï¼
ç§ã®ããã°ãåãã¦è¦ããï¼ã¨ããæ¹ã§ããã¡ãã®ããã°ããã覧ã«ãªã£ãæ¹ã¯ãä¸è¨ã®ããã°ããã²è¦ãã¦ã¿ã¦ãã ããããªãã¨ãªãã¨ãä¸è¨ã®ããã°ãèªãã§ããã ãã¨ãããï¼
ãããªããåå°ãåã³ã¾ããã¯ããæå¾
ãããæ¹ããã¿ã¾ããããã¡ãã®ããã°ãReactåå¦è
åãã«æ¸ãã¦ããã®ã§ãç°¡åã«ç¥èãã¤ããã¨ééããªãã
ã©ã¡ãããè¦ãæ¹ãããã¨ãããã¨ã¯ããã¾ããããReactã«ã¤ãã¦ä½ãç¥ããªãï¼ï¼ã¨ããåå¦è
ã®æ¹ã¯ãä¸è¨ã®ããã°ãè¦ã¦ãããã¡ãã®ããã°ãèªãã§ããã ããæ¹ãããçè§£ãæ·±ã¾ãããããã¾ããã
ãã¡ããããã®ã¾ã¾ãã¡ããèªãã§ããã ãã¦ããã¾ãã¾ããã
ã§ããããã¡ããèªãã å¾ã«ã§ãããã²ï¼ï¼ä¸è¨ã®ããã°ãã覧ãã ããã¾ãï¼ï¼ï¼ãã¡ããã¡ããªå¿µæ¼ãï¼
ããã¯ãã¦ããããã¡ãã®ããã°ã§ã¯ãç¾å¨ãReactã使ã£ã¦å®è£
ãè¡ã£ã¦ããç§ããããã¯ãããã¦ãããã»ãããããªã¨æããã¨ã3ç¹ãããã¨åæã«ã解説ãè¡ã£ã¦ãããã®ã¨ãªã£ã¦ããã¾ãã
ç§ãããã°ãæ¸ããªãããããæ·±ãçè§£ããæ´çãã¦ãããã¨æã£ã¦ããã¾ãã®ã§ãå
±ã«é å¼µã£ã¦ããã¾ãããï¼ï¼ï¼
ããããæ¸ãæ¹ãæ £ããªã
æ°äººç ä¿®ã®æã¯ãJavaã触ã£ã¦ãããJavascriptãåãã¦ã ã£ãã®ã§ãæ¸ãæ¹ã«ããããæ¸æãã¾ããã
ã¢ãã¼é¢æ°ã£ã¦ãªã«ï¼ï¼
const arow = (int1, int2) => { return int1*int2; } ... console.log( arow(3, 7) );ã//21
æåãã®=>ãè¦ãã¨ããé ã«ã¯ã¦ãªãæµ®ãã³ã¾ãããä½ãã©ããªã£ã¦ããã®ããJavaã®ã¡ã½ããã®ããã«æ¸ãã ãã§ã¯ãããªãã®ãããã
ã§ãæå¤ã¨åãã¯ã·ã³ãã«ã§ã
const arow = (弿°1, 弿°2...) => { return ( //弿°ã使ã£ã¦è¡ãããå¦çãæ¸ã ) } ... console.log( arow(弿°1, 弿°2...) );ã//å¼ã³åºãå ã«ã¯ãå¦çãããçµæãè¿ã£ã¦ãã
ãã®ãããªJavaã®ã¡ã½ããã¨ãã¾ã大差ãªãåãã«ãªãã¾ããããã¦ããã®=>ã®æ£ä½ã¯ãã¢ãã¼é¢æ°ã¨å¼ã°ãã¾ãã
ã¢ãã¼é¢æ°ã«ã¤ãã¦ã®è©³ç´°ã¯ãä¸è¨ããåç
§ãã ããã
ãã®ä»ã®ç¬ç¹ãªæ¸ãæ¹ï¼ç価ãä¸é æ¼ç®åï¼
ç§ãã³ã¼ããæ¸ãä¸ã§æ £ããªãã£ãæ¸ãæ¹ã2ã¤ãç´¹ä»ãã¾ãã
ï¼ï¼å¤ã®æ¯è¼ã®ä»æ¹ï¼ç価ã¨å³å¯ç価ï¼
const stringNum = "123"; const num = 123; stringNum == num;ã//true stringNum === num;ã//false
==ã使ã£ã¦å¤ãæ¯è¼ããæ¹æ³ã¯ãã¡ãããåç¥ãã¨æãã¾ãããJavascriptã§ã¯ãã¤ã³ã¼ã«ã2ã¤ã§ãã3ã¤ã§ãå¤ãæ¯è¼ãããã¨ãã§ãã¾ãã
ä¸è¨ã®ä¾ã§ã¯ãæååã®123ã§ãã夿°stringNumã¨æ°åã®123ã§ãã夿°numãå®ç¾©ããã¦ãã¾ãã
ãããæ¯ã¹ã¦ã¿ãã¨ãã¤ã³ã¼ã«ã2ã¤ã®çµæã¯trueã§ã3ã¤ã ã¨falseã«ãªãã¾ãããããåããã ã¨æãã¾ããã
const stringNum = "123"; const num = 123; stringNum == num;ã//åã¯æ¯è¼å¯¾è±¡ã«ãªãããå¤ãæ¯è¼å¯¾è±¡ã¨ããï¼çä¾¡ï¼ stringNum === num;ã//夿°ã®åã¨ãå¤ã®ä¸¡æ¹ãæ¯è¼å¯¾è±¡ã¨ããï¼å³å¯ç価ï¼
ãã®ããã«ãã¤ã³ã¼ã«ã2ã¤ã ã¨ãåã¯éã£ã¦ãã¦ããå¤ãåãã§ããã°trueã«ãªãã¾ãããããç価ã¨è¨ãã¾ãã䏿¹ãã¤ã³ã¼ã«ã3ã¤ã ã¨ãåãä¸è´ãã¦ãããã©ãããæ¯è¼å¯¾è±¡ã¨ãªããããå®å
¨ä¸è´ã§trueã«ãªãã¾ãããããå³å¯ç価ã¨è¨ãã¾ãã
æ¯è¼ãå¦å®çã«ãããå ´åã¯ã
stringNum != num;ã//åã¯æ¯è¼å¯¾è±¡ã«ãªãããå¤ãæ¯è¼å¯¾è±¡ã¨ããï¼ä¸çä¾¡ï¼ stringNum !== num;ã//夿°ã®åã¨ãå¤ã®ä¸¡æ¹ãæ¯è¼å¯¾è±¡ã¨ããï¼å³å¯ä¸ç価ï¼
ãã®ããã«ãããã¨ã§å¦å®çã«æ¯è¼ãããã¨ãã§ãã¾ãããã¡ãã¯ãåã対象ã«ããªãå ´åãä¸ç価ãåã対象ã«ããå ´åãå³å¯ä¸ç価ã¨è¨ãã¾ããç価ã¨å³å¯ç価ãä¸ç価ã¨å³å¯ä¸ç価ã®è©³ç´°ã«ã¤ãã¦ã¯ãä¸è¨ããåç §ãã ããã
ï¼ï¼ä¸é
æ¼ç®å
onigiri1 = "konbu"; onigiri2 = "mentaiko"; ... <p> { onigiri1 === "konbu" ? "ãã®ãã«ããã¯æå¸ã§ã" : "ãã®ãã«ããã¯æå¸ã§ã¯ããã¾ãã" } </p> //ã¯ã¦ãªããåãã夿æ¡ä»¶ã«ãªããtrueã§ããã°ã':'ããåãè¿ããfalseã§ããã°ã':'ã®å¾ããå¤ãã
{ æ¯è¼ãããå¤ === æ¯è¼ãããå¤ ? çã®å ´åã«è¿ããããã® : å½ã®å ´åã«è¿ããããã® }ã®ããã«æ¸ãã¨ã
ãã¼ã¯ã¢ããã®ä¸ã§çãå½ãã§ãè¿ãå¤ãå¤ãããã¨ãããã®ããã«å®è£
ãããã¨ã§è¿ãå¤ãå¤ãããã¨ãã§ãã¾ãã
ä¸é
æ¼ç®åã®è©³ç´°ã«ã¤ãã¦ã¯ãä¸è¨ããåç
§ãã ããã
Stateã£ã¦ãªã«ï¼ï¼
Stateã®æ¦å¿µ
æ£ç´ãã®Stateã®æ¦å¿µãæãããã¨ãé£ããã£ãã§ããé ã§ããã£ãã¤ããã§ããã³ã³ãã¼ãã³ããã©ãã©ããã¹ãåãã¦ããã¨ãé ãæ··ä¹±ãã¾ããã²ã¨ã¤ã²ã¨ã¤ãã£ããå¦ãã§ããã¾ãããã
ã¾ããStateã¨ãããã®ã¯ããã®åã®éãç¶æ
ãæå³ããå¤ã®ç¶æ
ã管çãã¾ããã©ãããæã«ä½¿ããã¨ããã¨ãã¦ã¼ã¶ã¼ã®æä½ã«å¿ãã¦ãå¤ãæ´æ°ããã¨ãã£ãå ´åããã®å¤æ°ã®ç¶æ
ã管çããç®çã§ä½¿ç¨ããã¾ããããã¦ããã®Stateã®å¤ã®ç¶æ
ã¯ãã³ã³ãã¼ãã³ããã¨ã«ä¿æããã¾ãã
ä¾ãã°ãparents.tsxå
ã§Stateãå®ç¾©ããã¨ããã®ã³ã³ãã¼ãã³ãï¼parents.tsxï¼å
ã§ãããã®Stateã®å¤ãä¿æã§ããªãã¨ãããã¨ã§ãããã®ãããå¤ãæ´æ°ãããã¨ãã«ã¯ããã®Stateãæã£ã¦ããã³ã³ãã¼ãã³ããåã¬ã³ããªã³ã°ããããã¨ã«ãã£ã¦å¤ãæ´æ°ãããã¨ããç¹æ§ãããã¾ãã
ãããStateãå®ç¾©ããã³ã³ãã¼ãã³ãã¨ã¯å¥ã®ã³ã³ãã¼ãã³ãå
ã§ãStateãæ´æ°ãããå ´åããã®StateãPropã§æ¸¡ãããuseContextã¨ãããã®ã使ã£ã¦ããã«Stateãå®ç¾©ãããã¨ã§ãåã³ã³ãã¼ãã³ãå
ã§Stateãæ´æ°ããããããã¨ãã§ãã¾ããuseContextã«ã¤ãã¦ã¯ãå¾ã»ã©è§£èª¬ãã¾ãã
ãã®Stateã§ãããReactã®ã©ã¤ãã©ãªã«ã¯ãuseStateã¨ããç¶æ
ã管çããããã¯ãã©ã¤ãã©ãªã¨ãã¦åå¨ãã¾ããReactã§ã¯ä¸è¬çã«ãã®useStateãç¨ãã¦Stateã®ç®¡çãè¡ãã¾ãã
useStateã«ã¤ãã¦
ï¼useStateã®ä½¿ãæ¹ï¼
//reactããuseStateãimportãã¦ãã import { useState } from 'react'; ... const [ index, setIndex ] = useState(1); //const [ç¶æ 管çããã夿°ï¼ç¾å¨ã®å¤ãä¿æï¼, ç¶æ ã夿´ããããã®é¢æ°ï¼ã»ãã¿ã¼é¢æ°ï¼] = useState(ç¶æ ã®åæå¤); setIndex(2); //indexã2ã«æ´æ°
ä¸è¨ã®ããã«æ¸ãã¦ä½¿ç¨ãã¾ããå¤ãæ´æ°ãããå ´åã¯ãuseStateã®é
åã®2ã¤ç®ã«ããã»ãã¿ã¼é¢æ°ã«å¤ã渡ããã¨ã«ãã£ã¦å¤ãæ´æ°ãããã¨ãã§ãã¾ãã
ã§ã¯ããããè¸ã¾ããããã§ãä¸è¨ã®ã³ã¼ããèªãã§ã¿ã¦ãã ãããindexã®åæå¤ã¯ã1ã§ããããã®ãã¿ã³ãä¸åº¦æ¼ããéã«ã³ã³ã½ã¼ã«ã«è¡¨ç¤ºãããå¤ã¯ä½ã«ãªãã¨æãã¾ããã
const Parents = () => { const [ index, setIndex ] = useState(1); const btnClick = () => { setIndex(index+1); //indexã«ï¼1ãã console.log(index); }; return ( <button onClick = { btnClick } > +1 </button> <p> { `index: ${index}` } </p> ) };
ããããã2ã ã¨æãæ¹ã大åãã¨æããã¾ãããå®ã¯1ãæ£è§£ã§ãã
å¤ãæ´æ°ãããªãåé¡
å®ã¯ããã®useStateã®ã»ãã¿ã¼é¢æ°ã«å¤ãã»ããããæ®µéã§ã¯ãã¾ã å¤ã®æ´æ°ã¯ããã¦ããããæ¬¡ã«ãã®å¤ãå
¥ãã¨ããäºç´ããããããªç¶æ
ã«ãªãã¾ãã
ããããéåæã§å¦çãããã¨ãããã¨ã§ãããªã®ã§ããã®ã¤ãã³ããã³ãã©å
ã§ã¯indexã¯ã¾ã æ´æ°ã¯ããã¦ãã¾ãããï¼ãã®å¦çãçµããã°æ´æ°ããããããç»é¢ä¸ã¯ãindex: 2ã¨è¡¨ç¤ºãããï¼
ãã®ããã
const btnClick = () => { setindex(index+1); //indexã¯1 setindex(index+1); //indexã¯1 console.log(index); };
ãã®ããã«ã¤ãã³ããã³ãã©å
ã§ã»ãã¿ã¼é¢æ°ã2åå®è¡ãã¦ãindexã¯ãã³ã³ã½ã¼ã«ã§ã¯1ã®ã¾ã¾ã«ãªãã¾ããã¾ããç»é¢ä¸ã¯index: 2ã¨è¡¨ç¤ºããã¾ãããã®ä¸ã§æ´æ°ãããå¤ãæ±ãããã¨ãã«ã¯ãä¸è¨ã®ãããªå®è£
ãè¡ãã¾ãã
const btnClick = () => { setindex(index+1); //indexã¯1 setindex(prev => prev + 1); //ååæ´æ°ãããå¤ã使ã£ã¦æ´æ°ãããã¨ãã§ãã //ã¢ãã¼é¢æ°ã«ãªã£ã¦ããã®ã§ã setindex(prev => { return prev + 1 } )ã¨åãæå³ //prevã«ååã»ããããå¤ï¼2ï¼ã渡ã£ã¦ãã¦ããã®å¤ã«å¯¾ãã¦+1ããå¤ãã»ããããã };
ãã®ãããä¸è¨ã®ããã«å®è£
ããã¨ç»é¢ä¸ã¯index: 3ã¨ãªãã¾ãããã®ç¹æ§ãçè§£ãã¦ããªãã¨ãä¾ãã°ãStateAããã®å¤ã«ãªã£ãã¨ãã«StateBãæ´æ°ãããã¨ããæã«ä¸æ®µéã®ãããçãã¾ãã
ãã®å¤ã®ãããèµ·ããä¾ãã³ã¼ãã§å®éã«æ¸ãã¦ã¿ã¾ãããã«ããã®å
·ãæ¸ãããã¿ã³ãæ¼ãã¨ããã®å
·ãå
¥ã£ããã«ããã®ååã表示ããããã®ãå®è£
ãã¦ã¿ã¾ãï¼ä¸è¨å³1åç
§ï¼ã
useStateã®ç½ ï¼ãã«ãããã¿ã³ã使ã£ãç°¡åãªå®ä¾ï¼

const Parents = () => { const [ onigirinoGu, setOnigirinoGu ] = useState( "æå¤ªå" ); //ãã«ããã®å ·ã管çããState const [onigiri, setOnigiri] = useState( "æå¤ªåãã«ãã" ); //ãã«ããã®ç¨®é¡ã管çããState const onigiriSwitch = ( { gu } : string ) => { setOnigirinoGu( gu ) //渡ã£ã¦ãããã«ããã®å ·ãã»ããããï¼ã ããéåæã®ããã1åãã¿ã³ãæ¼ããã¨ãã¯ãæå¤ªåã®ã¾ã¾ï¼ if ( onigirinoGu === "æå¤ªå" ) { setOnigiri( "æå¤ªåãã«ãã" ); } else if ( onigirinoGu === "é®" ) { seOnigiri( "é®ãã«ãã" ); } else if ( onigirinoGu === "æå¸" ) { setOnigiri( "æå¸ãã«ãã" ); } }; //éåæã®ãããOnigininoGuã«æ¸¡ã£ã¦ããå¤ãã»ãããã¦ãOnigininoGuå ã§ã¯ã¾ã å¤ãã»ããããã¦ããªãããããã¾ãåããªã return ( <div> <span>é¸ãã ãã«ããã®å ·:</span> <span>{ onigirinoGu }</span> </div> <span>é¸ãã ãã«ãã:</span> <span>{ onigiri }</span> <div> <button onClick = { onigiriSwitch('æå¤ªå') }>æå¤ªå</button> <button onClick = { onigiriSwitch('é®') }>é®</button> <button onClick = { onigiriSwitch('æå¸') }>æå¸</button> </div> ) };
ä¾ãã°ãã¿ã³ãé®âæå¸âæå¤ªåâæå¤ªåã®é ã§æ¼ãã¨ã
é®ãã¿ã³æ¼ä¸âsetOnigirinoGu( é® )ãã»ãããããã¯ãããOnigiriSwitchã®é¢æ°ã®ä¸ã§ã¯ãã¾ã åæå¤ã®æå¤ªåã®ã¾ã¾ã§ãããããæå¤ªåãã«ããã¨åºã¦ãã¾ãã¾ãã
ãã®ãã¨ã¯ãæå¸ãã¿ã³æ¼ä¸âé®ãã«ãããæå¤ªåãã¿ã³æ¼ä¸âæå¸ãã«ãããæå¤ªåãã¿ã³âæå¤ªåãã«ããã¨ããããã«ã1段éé
ãã¦è¡¨ç¤ºããã¦ãã¾ãã¾ãã

useStateã®ç½ ããæãåºãã«ã¯
弿°ã§æ¡ä»¶å¦çãæ¸ã
ãããä¸çªç°¡åã§è¯ããã¨æãã¾ããä¾ãã°ãã¦ã¼ã¶ã¼ãå
¥åããå¤ã弿°ã«åãå ´åã«ã¯ããã®æ¹æ³ã§è§£æ±ºãããã¨ãããããã¾ãã
const onigiriSwitch = ( { gu } : string ) => { setOnigirinoGu( gu ); //渡ã£ã¦ãããã«ããã®å ·ãã»ãããã if ( gu === "æå¤ªå" ) { setOnigiri( "æå¤ªåãã«ãã" ); } else if ( gu === "é®" ) { seOnigiri( "é®ãã«ãã" ); } else if ( gu === "æå¸" ) { setOnigiri( "æå¸ãã«ãã" ); } //Stateã®å¤æ°ã§ã¯ãªãã弿°ã®å¤ã§åå²å¦çãæ¸ã };
åå²å¦çã¯æ¸¡ã£ã¦ããå¤ã§å¦çãããã¨ã§ããã¾ãå®è£
ãã§ãã¾ããuseStateã®å¤æ°ãç¨ãã¦æ¡ä»¶åå²ãå®è£
ããã®ã¯ããã¾ãæåããªãå ´åãããã¾ãã®ã§ããã®ç¹ãçæãã ããã
Contextã£ã¦ãã£ã¡ã便å©ããã
å
ã»ã©useStateã®è©±ããã¦ããæã«ãStateã¯ã³ã³ãã¼ãã³ããã¨ã«ä¿æãããã¨ããã話ãããã¨æãã¾ãããã®ãããããä¸ã¤ã®Stateãè¤æ°ã®ã³ã³ãã¼ãã³ãã§æ´æ°ãããã¨ãªãã¨ãPropsã§ãã±ããªã¬ã¼ã®ããã«åã³ã³ãã¼ãã³ãããåã³ã³ãã¼ãã³ãã¸ã¨æ¸¡ããªãã¨ãããªãã®ãã¨ããçåãåºã¦ãããã¨æãã¾ãããããï¼ï¼ãããªæã«ä¾¿å©ãªã®ããContextã§ããç§ãReactã§ä¸çªå¥½ããªããã¯ã§ããï¼æ¬å½ã«ä¾¿å©ï¼
Cotextã®æ¦å¿µ
Contextã¯ãç°¡åã«è¨ãã¨ããã®Contextå
ã«å¤æ°ã颿°çãå®ç¾©ããã¨ãå¥ã³ã³ãã¼ãã³ãã§ããã®Cotextå
ããå®ç¾©ãããã®ãåãåºããã¨ãã§ããã¨ãããã®ã§ããã¤ã¡ã¼ã¸ã¨ãã¦ã¯ãä¸è¨ã®å³ã®ãããªã¤ã¡ã¼ã¸ã«ãªãã¾ããã¾ãReactã§ã¯ä¸è¬çã«ãReactã®ã©ã¤ãã©ãªå
ã«ããcreateContextã¨useContextãç¨ãã¦å®è£
ãã¾ããcreateContextãContextã使ãããã®ã§ãuseContextããã®Contextãã夿°ã颿°ãåãåºãã¨ãã«ä½¿ç¨ãããã®ã§ãã


ã§ã¯ããã®ã¤ã¡ã¼ã¸ãæã£ãã¾ã¾ãã³ã¼ãã®æ¸ãæ¹ã説æãã¦ããã¾ããï¼åãæç¤ºçã«è¨è¼ãã¦ããå½¢ã§å®è£
ãã¾ãï¼
ï¼ãã©ã«ãæ§æã«ã¤ãã¦ï¼
src/ ãâ Parent.tsxã//4ã¤ã®å«ã³ã³ãã¼ãã³ããã¾ã¨ãã¦è¡¨ç¤ºããã ãâ FamilyContext.tsxã//Contextãå®è£ ããã³ã³ãã¼ãã³ã ãâ child1/ ããâ GrandChildA.tsxã//å«ã³ã³ãã¼ãã³ãA ãâ child2/ ã â GrandChildB.tsxã//å«ã³ã³ãã¼ãã³ãB ã â child3/ ãã â GrandChildC.tsxã//å«ã³ã³ãã¼ãã³ãC ãã â GrandChildD.tsxã//å«ã³ã³ãã¼ãã³ãD
FamilyContext.tsx
import { createContext, useState, SetStateAction } from 'react'; interface FamilyContextType { //åã³ã³ãã¼ãã³ãã«æ¸¡ããã夿°ã颿°ã®åãããã«æ¸ãï¼Contextå ã«ã»ããããããã®ï¼ name: string; setName: Dispatch<SetStateAction<string>>;ã//Stateãå®ç¾©ãããå ´å eventHandler: () => void; }; type Props = { children: React.ReactNode; //åã³ã³ãã¼ãã³ããã¡ãããã«å ¥ãããã¹ãããããã¨ã§ããã®Context以ä¸ã®åã³ã³ãã¼ãã³ãã§Contextå ã®ç©ã使ç¨ã§ããããã«ãªã }; export const UseFamilyContext = createContext<FamilyContextType>({ //ããã§Contextå ã«å ¥ããã夿°ã颿°ãå®ç¾©ãããå·¦ã®å¤ã¯å¤æ°ãå®ç¾©ããéã®åæå¤ã®ãããªãã® //ããã«å®ç¾©ããªãã¨Contextå ã«ã¯å«ã¾ããªã //åã³ã³ãã¼ãã³ãã§Contextå ããåãåºãéï¼useContextã使ç¨ããéï¼ã¯ããã®useFamilyContextããåãåºã name: '', setName: () => {}, eventHandler: () => {}, }); export const FamilyContext = ({ children }: Props) => { const [name, setName] = useState("kaji"); const eventHandler = () => { //å¦çãè¨è¼ }; ... ãreturn ( <UseFamilyContext.Provider //ãã¾ããªãçã«.Providerã¨ãããã®ãä»ãã //Contextãããã¤ãã¼ã§åã³ã³ãã¼ãã³ããã©ãããããã¨ã§ãããããä¸ã®ããªã¼æ§é ã®ã³ã³ãã¼ãã³ãã§ä½¿ç¨ãã§ããããã«ãªã value = { { name, setName, eventHandler, } } > { children }ã//åã³ã³ãã¼ãã³ããã©ããããã </UseFamilyContext.Provider> ã) };
Contextãå®ç¾©ããã³ã³ãã¼ãã³ãã¯ä¸è¨ã®ããã«å®è£
ãã¾ããæ¸ããã¨ã¯å¤å°ããã¾ããããããã»ãããã¦ãã¾ãã¨ã¨ã¦ã便å©ã«ãªãã¾ãã
ãã¨ã¯ããã®ã³ã³ãã¼ãã³ãï¼FamilyContext.tsxï¼ãã©ããã§å¼ã³åºãã¦ãããªãã¨ã使ããã¨ãã§ããªããããåã³ã³ãã¼ãã³ããã¾ã¨ãã¦ããã³ã³ãã¼ãã³ãã§å¼ã³åºãã¦ããã¾ããä»åã ã¨ãParent.tsxãæé©ã§ãã®ã§ãããã§å¼ã³åºãã¾ãã
Parent.tsx
import { FamilyContext } from './FamilyContext.tsx' ... return ( <FamilyContext> <GrandChildA /> <GrandChildB /> <GrandChildC /> <GrandChildD />ã//åã³ã³ãã¼ãã³ããæãå½¢ã§æ¸ã </FamilyContext> )
ä¸è¨ã®ããã«åã³ã³ãã¼ãã³ããContextã®ã³ã³ãã¼ãã³ãã§æããããªå½¢ã§æ¸ãã¾ããããã¾ã§ã»ãããããã¨ã§ãåã³ã³ãã¼ãã³ãã§Contextããã®åãåºããå¯è½ãªç¶æ
ã«ãªãã¾ããä»åã¯Parent.tsxå
ã§å¼ã³åºãã¾ãããããã®æã®ç¶æ³ã§ãå¼ã³åºãæé©ãªå ´æã¯ç°ãªãã¾ããã§ãã大æµã¯ããã®å¤æ°çã使ãã¾ããããåã³ã³ãã¼ãã³ããã¾ã¨ã¾ã£ã¦ããããä¸ã®é層çã§å¼ã³åºãã¦ãããã¨è¯ããã¨æãã¾ããã§ã¯æ¬¡ã«ãåã³ã³ãã¼ãã³ãã§Contextãã夿°ã颿°ãåãåºãã³ã¼ããå®éã«è¦ã¦ããã¾ãããã
GrandChildA.tsx
import { useContext } from 'react'; import { useFamilyContext }; const GrandChildA = () => { const { name, setName, eventHandler } = useContext( useFamilyContext ); ãã//useContextã使ã£ã¦ãuseFamilyContextããå®ç¾©ãã夿°ã颿°çãåãåºãã¾ã }
ä¸è¨ã®ããã«å®è£ ãããã¨ã§ãContextå ã®å¤æ°çãåãåºããã¨ãã§ãã¾ããå¤åå¾ã¯ã䏿¬å¼§ãç¨ãã¦ãåå²ä»£å ¥ã使ç¨ãã¦å¤ãåå¾ãã¾ãã使ãå´ã¯ããããè¨è¼ããã ãã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
ãããã«
ãã¦ããããã§ããã§ãããããJanaScriptã®ç¬ç¹ãªæ¸ãæ¹ãããReactã®ããã¯ã¾ã§ãæ·±æããããããããªãããªã¥ã¼ãã¼ã ã£ãã®ã§ã¯ãªãã§ãããããããã¾ã§èªãã§ãã ãããæ¬å½ã«ãããã¨ããããã¾ããããã«æ·±æããã¨ããã°ãã¾ã ã¾ã æ·±æã£ã¦ãããReactããããæ©ã«Reactã®é
åã«æ°ã¥ããReactã¦ã¼ã¶ã¼ãããã«å¢ãã¦ãããã¨å¬ããã§ãã
ã§ã¯ãã¾ãä¼ãæ¥ã¾ã§ã