Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript拼接与redux一起工作时出错_Javascript_Reactjs_Redux - Fatal编程技术网

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']