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)