我正在嘗試使用 react 和 redux 將從資料庫獲取的資料傳遞給物件。我不知道我做錯了什么
這是我的代碼
const [orders, setOrders] = useState([]);
useEffect(() => {
props.fetchOrder(setOrders);
}, []);
console.log(orders);
const columnsFromBackend = {
newOrder: {
name: "Requested",
items: orders
},
x: {
name: "x",
items: []
}
};
const [columns, setColumns] = useState(columnsFromBackend);
console.log(columns);
結果是頁面呈現兩次,在它顯示的控制臺中,冷杉
訂單 = []
列 = {newOrder: {…}, x: {…}}
第二次
訂單 = (39) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}、{… }, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}、{…}、{…}]
列 = {新訂單:專案:[]}
newOrder 物件內的 items 屬性應該等于訂單,但它保持為空
如何將訂單正確性的資料傳遞到 items 屬性中?
只是為了清除,這是來自 redux 操作的 fetch 函式
export const fetchOrder = setOrders => dispatch => {
fetch("/api/orders")
.then(res => res.json())
.then(data => {
setOrders(data);
dispatch({ type: FETCH_ORDER, payload: data });
});
};
謝謝你,祝你有美好的一天
uj5u.com熱心網友回復:
columns每當更新時,您都需要orders更新。為此,您需要useEffect在代碼中添加另一個鉤子,如下所示。
useEffect(() => {
setColumns(prevState => {
return {
...prevState,
x: {
...prevState.x,
items: orders
}
};
});
}, [orders]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361587.html
下一篇:根據陣列物件資料創建一個新陣列
