我在做一个JS项目,是为一个在线课程创建一个预算管理应用。我的应用包含以下组件:
- 预算(Budget)
- 剩余金额(Remaining)
- 已花费金额(Spent so far)
- 分配的预算(Allocated Budget)
- 改变预算分配(Change Allocation)
我被要求为该应用添加第6个组件“CurrencyDropdown”,用于提供不同货币选项供用户选择,我已经完成了这个组件。
// CurrencyDropdown.js
import React, { useState } from 'react';
const CurrencyDropdown = () => {
const [selectedCurrency, setSelectedCurrency] = useState('$'); // 默认货币为美元
const handleCurrencyChange = (event) => {
setSelectedCurrency(event.target.value);
};
return (
<div className='alert alert-primary'>
<label htmlFor="currency">货币:</label>
<select id="currency" value={selectedCurrency} onChange={handleCurrencyChange}>
<option value="$">$ 美元</option>
<option value="£">£ 英镑</option>
<option value="€">€ 欧元</option>
<option value="₹">₹ 卢比</option>
{/* 根据需要添加更多货币选项 */}
</select>
</div>
);
};
export default CurrencyDropdown;
接下来的任务是在项目中添加代码,使得当从CurrencyDropdown
更改货币时,应用中其他所有组件显示的货币也随之改变。这是让我卡住的地方。
我尝试创建一个新的JS组件CurrencyContext
:
// CurrencyContext.js
import React, { createContext, useContext, useState } from 'react';
const CurrencyContext = createContext();
export const CurrencyProvider = ({ children }) => {
const [selectedCurrency, setSelectedCurrency] = useState('USD');
const changeCurrency = (currency) => {
setSelectedCurrency(currency);
};
return (
<CurrencyContext.Provider value={{ selectedCurrency, changeCurrency }}>
{children}
</CurrencyContext.Provider>
);
};
export const useCurrency = () => {
return useContext(CurrencyContext);
};
我不清楚如何或在哪里应用这个上下文组件来影响整个应用中的货币单位变化。