對于我的問題,現在我正在像這樣從 api 獲取資料。
const fetchSomething = () => dispatch => {
return axios
.get('productsapi/getsomething', {
})
.then(res => {
dispatch({
type: FETCH_SOMETHING,
payload: res.data[0].Groups[0].Products,
payGroup: res.data[0],
});
})
.catch(err => {
console.log('fetching error');
throw err;
});
};
如您所見payload,paygroup由于我在組件中遇到的問題,我從 api 獲取了 2 種資料。
這是組件
let hotProductList = useSelector(state => state.productReducer.hotProduct);
let hotProductGroup = useSelector(
state => state.productReducer.newHotProductGroups,
);
const [homeHotProductList, setHomeHotProductList] = useState(hotProductGroup.Groups[0].Products);
//No Error
//---------
//const [homeHotProductList, setHomeHotProductList] = useState(hotProductList);
//---------
正如您在useState. 如果我想呈現initial productList使用的資料,payGroup我必須宣告 like useState(hotProductGroup.Groups[0].Products) 。問題是,這種宣告總是回傳錯誤,指出
undefined is not an object
但是如果我想initial productList從payload這個錯誤中渲染使用資料不會發生。
我應該怎么做,使declaration works對payGroup沒有得到錯誤
uj5u.com熱心網友回復:
我假設homeHotProductList是一個陣列。您可以homeHotProductList在useEffect. 將hotProductList和hotProductGroup作為依賴項添加到useEffect. 因此,無論何時這些值發生變化,您都可以有條件地homeHotProductList使用setHomeHotProductListinside進行設定useEffect。
let hotProductList = useSelector(state => state.productReducer.hotProduct);
let hotProductGroup = useSelector(
state => state.productReducer.newHotProductGroups,
);
const [homeHotProductList, setHomeHotProductList] = useState([]);
useEffect(() => {
// here you can set homeHotProductList conditionally
}, [hotProductList, hotProductGroup])
關于這個錯誤
undefined 不是一個物件
如果您沒有獲得類似的價值,您可以使用Optional chaining或Nullish 合并運算子hotProductGroup?.Groups?.[0]?.Products ?? []
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355607.html
標籤:javascript 反应 反应原生
下一篇:并排顯示折疊部分
