![](/img/trans.png)
[英]How to share state between reducers in react (using hooks) without redux
[英]How to get a single object by using react reducers?
我發現這個教程https://www.digitalocean.com/community/tutorials/react-crud-context-hooks描述了如何使用反應鈎子和上下文構建 CRUD 應用程序 API。
假設 state 被描述為帶有 object 的數組,並且在 appReducer 中我們有操作:
const initialState = {
products: [
{
id: 1,
name: "Milk",
amount: 3,
company: "XXX"
}
]
};
export default function appReducer(state, action) {
switch (action.type) {
case "ADD_PRODUCT":
return {
...state,
products: [...state.product, action.payload],
};
case "EDIT_PRODUCT":
const updatedProduct = action.payload;
const updatedProducts = state.products.map((prod) => {
if (product.id === updatedProduct.id) {
return updatedProduct;
}
return prod;
});
return {
...state,
products: updatedProducts,
};
case "REMOVE_PRODUCT":
return {
...state,
products: state.products.filter(
(prod) => prod.id !== action.payload
),
};
default:
return state;
}
};
我想到的是在 initialState 中添加 selectedProduct 屬性,但是我每次都需要返回產品數組。
我也在考慮添加額外的 reducer,但是這個解決方案存在同步問題,返回的 selectedProduct 已過時。
根據我對這個問題的理解,我相信您正在嘗試從列表中獲取單個產品。 那么你可以在你的減速器中添加一個案例,比如“GET_SINGLE_PRODUCT”。
export default function appReducer(state, action) {
switch (action.type) {
case "GET_SINGLE_PRODUCT":
return {
...state,
product: state.products.find(
(prod) => prod.id === action.payload
),
};
default:
return state;
}
};
State
const initialState = {
products: [
{
id: 1,
name: "Milk",
amount: 3,
company: "XXX"
}
],
product: {}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.