React JSフックのページ間でデータを渡す方法(useEffect)
Aug 21 2020
あるデータオブジェクトを別のページに渡そうとしていますが、2番目のページのデータをフェッチできません。以下のコードは私が使用しています
最初のページはLINKでデータを渡します
<Link to={{ pathname: `${path}/users/${organization.id}`,
data: organization
}}> <img src={config.s3Bucket + "/" + organization.logo} />
</Link >
ここでは、 'data'パラメータでオブジェクトを渡します
2ページ目
import React, { useState, useEffect } from 'react';
function UserList({ history, match }) {
const { path } = match;
const { id } = match.params;
const [organization, setOrganization] = useState(null);
// const { data } = this.props.location
useEffect(() => {
// console.log(location.data);
}, []); } export { UserList };
「location.data」と「this.props.location」を試しましたが、データを取得できません。この問題の解決にご協力ください。
回答
5 spycbanda Aug 21 2020 at 17:42
あなたはこのようにそれを行うことができます
<Link to={{ pathname: `${path}/users/${organization.id}`, state: organization}}>
<img src={config.s3Bucket + "/" + organization.logo} />
</Link >
と2ページ目
import React, { useState, useEffect } from 'react';
import {useLocation} from 'react-router-dom';
function UserList({ history, match }) {
const { path } = match;
const { id } = match.params;
const [organization, setOrganization] = useState(null);
const { state } = useLocation();
useEffect(() => {
console.log(state);
}, []);
}
export { UserList };
MA2WEB Aug 21 2020 at 17:48
withRouterを使用する
import { withRouter } from "react-router-dom"
export default withRouter(ComponentName)