我有一个公司减速器,希望包含一系列公司。由于当用户继续使用/company/name
时每个对象都很大,所以我只想从我的API中获取一个对象并将其添加到此数组中,因此,如果用户多次访问同一公司页面,则无需调用再次是api。
我的减速器:
const initialState = {
companies: []
};
export default (state = initialState, action) => {
switch (action.type) {
case GET_COMPANIES:
return {
...state
};
case GET_COMPANY:
return {
...state,
companies: [action.payload, ...state.companies]
};
default:
return state;
}
};
我是否有办法更新reducer中的状态并只返回1家公司?如上图所示,这将返回处于该状态的所有公司,尽管从逻辑上讲,使用“ GET_COMPANY”没有意义
我的动作
export const getCompany = name => dispatch => {
axios.get("/companies/" + name).then(res =>
dispatch({
type: GET_COMPANY,
payload: res.data
})
);
};
答案 0 :(得分:0)
您需要要检索的公司对象的某些“ id”或“ name”或其他属性, 然后您可以使用find方法执行此操作:
action.payload.find(company=>company.id===id)
根据MDN: find()方法返回满足提供的测试功能的数组中第一个元素的值。否则返回undefined。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find