我想将一个值从 useState 状态值传递给 useReducer 初始状态。
const [item, setItem] = useState([]);
const initialState = {
menuOpen: true,
promoOpen: false,
couponOpen: false,
cartOpen: false,
orderOpen: false,
orderAmount: 1,
filteredItem: item,
};
const [state, dispatch] = useReducer(reducer, initialState);
const fetchUrl = async () => {
const resp = await fetch(url);
const respData = await resp.json();
const item = respData.item;
const category = respData.category;
const promo = respData.promo;
setItem(item);
setCategory(category);
setPromo(promo);
setFilterItem(item);
};
但是当我执行 console.log(state.filteredItem)
时,我得到了一个空数组,所以我假设它没有将值传递给 initialState。有没有办法将 useState 状态值传递给 useReducer initialState 值?
先谢谢了
答案 0 :(得分:0)
const [item, setItem] = useState([]);
您使用空数组声明了您的状态,因此这就是filteredItem 显示的内容。如果您稍后设置了状态,为了在减速器中更改它,我认为您需要使用调度功能。
答案 1 :(得分:0)
您在这里尝试做的将不起作用。 reducer 的初始状态就是——INITIAL 状态。在您的 initialState
更新为获取结果之前,它将使用第一次渲染中的 items
值。对变量 initialState
的更改不会影响已经创建的 reducer。您必须执行 dispatch
操作才能将 items
存储在您的减速器中。