【发布时间】:2021-12-26 02:52:22
【问题描述】:
我想获取 API 数据并将其存储在上下文 API 中并在其他组件中使用它。问题是,每当页面加载最初时,它都会给出错误
TypeError: Cannot read properties of undefined
这可能是因为 API 是在之后获取数据,而组件是先渲染的。 这是我的上下文代码:
export const CrossRatesProvider = (props) => {
const [crossRates, setCrossRates] = useState([])
useEffect(() =>{
async function fetchaud()
{
await fetch('https://freecurrencyapi.net/api/v2/latest?apikey=6cfea260-497f-11ec-94b3-adf08d2418fe&base_currency=AUD')
.then(res => res.json())
.then(data => {
setCrossRates(data);
console.log(data)
})
}
fetchaud();
},[])
const value = {
crates: [crossRates, setCrossRates]
}
return (
<CrossRatesContext.Provider value={value}>
{props.children}
</CrossRatesContext.Provider>
)
}
这是我使用上下文数据的组件:
export default function XnaToCountry() {
const value = useContext(CrossRatesContext);
const [cRates] = value.crates;
if ( !cRates.length) {
return null;
}
return (
<div>
<Table responsive style={{fontSize:"small"}}>
<tbody>
<tr>
<td>{(0.0119063760/cRates.data.AUD).toFixed(9)}</td>
</tr>
</tbody>
</Table>
</div>
)
}
【问题讨论】:
-
XnaToCountry是否包含在您的应用程序中的CrossRatesProvider中? -
是的,它被包装了
标签: reactjs react-context