Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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连接到组件时从redux修改数据_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 将redux连接到组件时从redux修改数据

Javascript 将redux连接到组件时从redux修改数据,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,将redux连接到组件时修改redux中的数据是否正常?像这样 重演 反应 我添加了一个原本不在状态中的键如果这是您的意思,那么它不应该有任何性能影响。但是,我建议您将代码移动到组件MapStateTrops应执行将数据从状态映射到特定组件支柱的唯一功能。通过道具对数据的修改应留给组件 我认为在执行mapstatetops时添加字段是可以的,尽管这样做的必要性可以通过更仔细地考虑数据模型来解决 关于您的代码示例,我要修正的是不要改变实际的redux状态,这可能会导致严重的bug。因此,我会将其修

将redux连接到组件时修改redux中的数据是否正常?像这样

重演

反应


我添加了一个原本不在状态中的键

如果这是您的意思,那么它不应该有任何性能影响。但是,我建议您将代码移动到组件
MapStateTrops
应执行将数据从状态映射到特定组件支柱的唯一功能。通过道具对数据的修改应留给组件

我认为在执行
mapstatetops
时添加字段是可以的,尽管这样做的必要性可以通过更仔细地考虑数据模型来解决

关于您的代码示例,我要修正的是不要改变实际的redux状态,这可能会导致严重的bug。因此,我会将其修改为不可变:

const Component = connect(
    state => ({
        items: state.items.map(item => ({
            ...item,
            selected: true
        }))
    })
)(_Component);

数组的map函数始终返回一个新引用。我们不应该从connect函数返回新引用,因为它将绕过从connect函数内部返回的connect组件的shouldComponentUpdate处理。每当任何操作调度时,都不必始终调用此组件的呈现函数,这会随着应用程序的增长而影响性能

新参考必须始终来自reducer。


所以,在组件中设置任何新属性,或者在reducer中设置它

为什么不能将其添加到initialState?@Borjante,因为在那里不需要此密钥。这只是一个简单的例子,显示组件从状态获取修改后的数据我的意思是组件从状态获取修改后的数据
const Component = connect(
    state => ({
        items: state.items.map(item => {
            item.selected = true;
            return item;
        })
    })
)(_Component);
const Component = connect(
    state => ({
        items: state.items.map(item => ({
            ...item,
            selected: true
        }))
    })
)(_Component);