#4.React(Import/Export, Route)
ImportとExport
私がショッピングサイトのページを作成するとき、サーバーから商品名や価格などの情報を受け取るデータといえば、これらを一つ一つHTMLに入れるのは難しいです.この場合、他のファイルにデータを入れてインポートできます.export default [
{
id: 0,
title: "[1+1]오버핏 맨투맨 후드티 세트",
price: "38,500원",
},
{
id: 1,
title: "크루넥 루즈핏 스웨터",
price: "32,900원",
},
{
id: 2,
title: "MA-1 후드 항공 점퍼",
price: "79,200원",
},
];
たとえば、データです.jsという名前のファイルには、上記の情報(変数名、関数名、データ型など)が含まれています.jsでは、次のようにインポートできます.import products from "./data.js";
その後、Stateにこれらのデータを含め、使用するためにHTMLにデータをバインドできます.このように、すべてのデータをStateに入れたり、HTMLを作成したり修正したりする(データ量が大きい場合)よりも、簡潔で使いやすいと思います.function App() {
let [product, product변경] = useState(products);
return(
<div className="row">
<div className="col-md-4">
<img src="~~"width="100%"/>
<h4>{product[0].title}</h4>
<p>{product[0].price}</p>
</div>
)}
商品リストを使用してアセンブリ化+Map
3つの商品しかない場合は、上記のように1つずつ順番を書いても良いのですが、もっと多ければカタログをComponent化してMapを使って繰り返すことができます.function App() {
let [product, product변경] = useState(products);
return(
<div className="row">
{product.map((a, i) => {
return <Card product={product[i]} key={i} />;
})}
</div>
)}
function Card(props) {
return (
<div className="col-md-4">
<img src={props.product.src} width="100%" />
<h4>{props.product.title}</h4>
<p>{props.product.price}</p>
</div>
);
}
これにより、iカードにはproduct[i]のデータが転送されるので、順序を書かなくても、データの数に応じて商品リストを表示することができ、コードが短くなり、修正が多くなる場合に便利です.
Route
以前は、複数のページを作成すると複数のHTMLファイルが生成されていましたが、各ページに異なるHTMLファイルを表示するのではなく、React-RouterでHTML内部の内容を別のページに置き換えることができました.使用方法:
1.react-router-domという正式なライブラリをインストールし、
2. index.jsに次のコードを入力します(HashRouterもあります).import { BrowserRouter } from "react-router-dom";
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>,
document.getElementById("root")
);
export default [
{
id: 0,
title: "[1+1]오버핏 맨투맨 후드티 세트",
price: "38,500원",
},
{
id: 1,
title: "크루넥 루즈핏 스웨터",
price: "32,900원",
},
{
id: 2,
title: "MA-1 후드 항공 점퍼",
price: "79,200원",
},
];
import products from "./data.js";
function App() {
let [product, product변경] = useState(products);
return(
<div className="row">
<div className="col-md-4">
<img src="~~"width="100%"/>
<h4>{product[0].title}</h4>
<p>{product[0].price}</p>
</div>
)}
function App() {
let [product, product변경] = useState(products);
return(
<div className="row">
{product.map((a, i) => {
return <Card product={product[i]} key={i} />;
})}
</div>
)}
function Card(props) {
return (
<div className="col-md-4">
<img src={props.product.src} width="100%" />
<h4>{props.product.title}</h4>
<p>{props.product.price}</p>
</div>
);
}
以前は、複数のページを作成すると複数のHTMLファイルが生成されていましたが、各ページに異なるHTMLファイルを表示するのではなく、React-RouterでHTML内部の内容を別のページに置き換えることができました.使用方法:
1.react-router-domという正式なライブラリをインストールし、
2. index.jsに次のコードを入力します(HashRouterもあります).
import { BrowserRouter } from "react-router-dom";
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>,
document.getElementById("root")
);
import { Route } from 'react-router-dom';
function App(){
return (
<div>
HTML 잔뜩있는 곳
<Route exact path="/">
<div>메인페이지</div> (Component도 들어갈 수 있음.)
</Route>
<Route path="/detail">
<div>상세페이지</div>
</Route>
</div>
)
}
「戻る」ボタンの作成
ページングの他にも、リンクやHistory、Switchなどで様々なアクションを実現できます.では、ショッピングモールから詳細ページに移動し、後退ボタンを作成したい場合はどうすればいいのでしょうか.
import { Route, Link, Switch } from 'react-router-dom';
import { useHistory } from 'react-router-dom';
function App(){
let history = useHistory();
return (
<div>
HTML 잔뜩있는 곳
<Route exact path="/">
<div>메인페이지</div> (Component도 들어갈 수 있음.)
</Route>
<Route path="/detail">
<div>상세페이지</div>
<button className="btn" onClick={()=>{ history.goBack() }}>뒤로가기</button>
</Route>
</div>
)
}
以上のように、useHistory(usStateに似たHook).名前の関数をインポートし、historyという変数に格納して使用できます.これにより,このhistory変数にはページ移動履歴や有用な関数などが含まれる.有用な関数の1つはgoBack()という関数で、この関数を実行すると前のページに進むことができるそうです.前のページではなくカスタムページに移動したい場合は、push()という関数を使用して位置を指定できます.このライブラリの使い方は、調べたり、読んだり、調べたりしなければ分からないそうなので、よく検索して勉強する習慣を身につけましょう.
Reference
この問題について(#4.React(Import/Export, Route)), 我々は、より多くの情報をここで見つけました https://velog.io/@seongjae/4.ReactImportExport-Routeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol