1 回答

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
有幾件事,因?yàn)槟抢镉幸恍┢婀值慕M件/頁面。
您沒有
useEffect
在details.js
頁面中導(dǎo)入錯(cuò)誤顯示:7:5 錯(cuò)誤“useEffect”未定義
您通過
<Link>
組件傳遞的狀態(tài)需要通過props
(或解構(gòu)props
并location
直接獲?。z索。details.js
是一個(gè)功能組件,您沒有setState
(northis
) 功能。改用useState
鉤子。query
永遠(yuǎn)不會(huì)向該組件提供參數(shù)。一旦你解決了主要問題,你應(yīng)該通過props
.錯(cuò)誤“查詢”未定義
您的組件不是駝峰式的。
所有錯(cuò)誤都應(yīng)通過以下方式修復(fù):
//import { Link } from "gatsby"
import axios from 'axios';
import React, { useEffect, useState } from 'react';
import Layout from '../components/layout';
const Details = props => {
const [yourState, setYourState] = useState('');
useEffect(() => {
if (props.location.state.someState) {
axios.get(`https://cloud.iexapis.com/stable/stock/${props.location.state.query}/quote?token=*****************`)
.then(res => setYourState(res))
}
}, []);
return <Layout>
<div>
{/*do stuff with your yourState. (i.e: console.log('hi!', yourState))*/}
</div>
</Layout>;
};
export default Details;
關(guān)于第二點(diǎn)和第三點(diǎn):
const Details= props => {}
等于const Details= ({ location }) => {}
。這種解構(gòu)為您節(jié)省了一步并直接獲取location
對(duì)象,而不是props.location
在您的條件下進(jìn)行。setState
功能組件而不是類組件中不允許使用您的函數(shù)。這完全取決于您選擇一個(gè)或另一個(gè),但您需要了解它們的“限制”和“好處”。在這種情況下,您需要使用useState
鉤子。如您所見,它由const [yourState, setYourState]
. 第二個(gè)元素 (setYourState
) 是用于存儲(chǔ) 的值的函數(shù)yourState
,因此,您的 axios 異步請(qǐng)求將使用setYourState
函數(shù)存儲(chǔ)并通過 檢索yourState
。當(dāng)然,您可以隨意命名。從您的
index.js
,更新狀態(tài)并設(shè)置query
:<Link to='/details/' state={{setState: this.state.symbol, query: `yourQuery`}}/>
推薦讀物:
如果您需要任何一點(diǎn)的詳細(xì)解釋,請(qǐng)告訴我,我會(huì)提供。
添加回答
舉報(bào)