要件
関数内で生成したデータ(変数)を関数外で使いたいですが
どう書いたら使えますか?
以下ではうまくいきません。
id変数にpropsで渡ってきたデータを入れたい。
js
1const propid = (props) => { 2 const {id} = props.match.params; 3 console.log(id); 4} 5 6const id = propid;
追記
下記コードはconst pref = 'PREF28';
の部分で兵庫県エリアを直書きで指定しています。
こちらを親から~/:id
で渡したパラメータを変数として入れたい。
ただHyogo関数内にしかpropsで受け渡したデータを使用することができません。
また試しにconst keyId
〜検索クエリ一式をHyogo関数内に入れるとうまくfetchしてくれません。
なのでやったこととしては、const keyId
の前で新たにpropsを呼び出す関数をつくればいけるかと思ったのですが、
回答のコードで試してもundefiedで値が取得できませんでした。
jsx
1// import省略 2 3const keyId = 'your_key'; // ぐるなびAPI KEY 4const pref = 'PREF28'; // 現在こちらを直書きでエリア指定しています 5const hitPerPage = 99; // 件数(Max100) 6const lunch = 0; // 0 or 1 7const takeout = 1; // 0 or 1 8const bento = 1; // 0 or 1 9const deliverly = 0; // 0 or 1 10 11// 検索クエリ 12const URL = `https://api.gnavi.co.jp/RestSearchAPI/v3/? 13keyid=${keyId}& 14pref=${pref}& 15hit_per_page=${hitPerPage}& 16lunch=${lunch}& 17takeout=${takeout}& 18bento=${bento}& 19deliverly=${deliverly}`; 20 21const Hyogo = (props) => { 22 const [articles, setArticles] = useState([]); 23 24 useEffect(() => { 25 fetchArticles(); 26 }, []); 27 28 const fetchArticles = async () => { 29 try { 30 const res = await axios.get(URL); 31 setArticles(res.data.rest); 32 } catch (error) { 33 console.error(error); 34 } 35 } 36 37 return ( 38 <div className="article"> 39 {/* 省略 */} 40 </div> 41 ); 42} 43 44export default Hyogo; 45