Javascript拼接与redux一起工作时出错
我的拼接正在删除所有内容,但未单击项目。Javascript拼接与redux一起工作时出错,javascript,reactjs,redux,Javascript,Reactjs,Redux,我的拼接正在删除所有内容,但未单击项目。 我在这里研究了一篇关于这一点的流行帖子,但对我来说并不奏效,关于redux和修改状态的帖子也是如此。 我有一个redux函数,用于删除项目-action.item包含我要删除的项目的唯一索引: const deleteItem = (state, action) => { return updateObject(state, { orderedItems: state.orderedItems.splice(action.i
我在这里研究了一篇关于这一点的流行帖子,但对我来说并不奏效,关于redux和修改状态的帖子也是如此。
我有一个redux函数,用于删除项目-action.item包含我要删除的项目的唯一索引:
const deleteItem = (state, action) => {
return updateObject(state, {
orderedItems: state.orderedItems.splice(action.item, 1)
});
};
updateObject看起来像这样:
export const updateObject = (oldObject, updatedProperties) => {
return {
...oldObject,
...updatedProperties
};
};
不同的解决方案如f.e:
const deleteItem = (state, action) => {
return state.orderedItems.filter(element => element !== action.item);
};
不仅不起作用,而且给了我TypeError:无法读取未定义的属性“map”,因为我使用映射来显示每个项
let basket = (
<aside>
{this.props.orderedItems.map((orderItem, i) => (
<OrderElement key={i} id={i} title={orderItem.item} />
))}
</aside>
);
在单击录制3之前:点击后:
我完全不知道,提前谢谢你的帮助。我在这里可能错了,但这不是因为splice返回阵列中删除的项目吗 您正在将orderedItems设置为删除的项目
let months = ['Jan', 'March', 'April', 'June'];
let output = months.splice(0, 1);
//Output: ["Jan"]
//Months: ['March', 'April', 'June']
因此,您可能希望使用splice以外的其他东西,或者以不同的方式实现它。不要添加到呈现标记图像的链接,而是添加一个包含
state.orderedItems
和action.item
的示例。从数组中删除元素并返回删除的元素。@hereticmonkey我理解,但我仍然不知道如何解决这个问题,因为其他任何解决方案都会让我的页面下降。我在postIn React中添加了更多的信息,尤其是Redux,您希望确保不直接操作状态数组,因为React无法确定它是否已更改。您需要将该数组设置为新数组,在这种情况下,不包含要删除的项。关于这一点,已经有一些问题了。这是否回答了你的问题?我编辑了一篇帖子并添加了澄清——我尝试了其他的解决方案,但它们根本不起作用,给我带来错误或什么也不做,问题是我不知道我做错了什么。
let months = ['Jan', 'March', 'April', 'June'];
let output = months.splice(0, 1);
//Output: ["Jan"]
//Months: ['March', 'April', 'June']