Javascript 修改道具对象时,连接不更改子组件的道具

Javascript 修改道具对象时,连接不更改子组件的道具,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,嗨,我有一个组件样本,用connect like包装 @connect(state => ({ .... .... }), {}) export default class Sample extends Component { .... .... } 我从另一个组件导入样本,并将一个prop namedata作为 .... data = { a: 1, b: 2 } .... <Sample data={data} /> data = { a: 1

嗨,我有一个组件样本,用connect like包装

@connect(state => ({
    ....
    ....
}), {})
export default class Sample extends Component {
....
....
}
我从另一个组件导入样本,并将一个prop name
data
作为

....
data = {
a: 1,
b: 2
}

....
<Sample data={data} />
data = {
    a: 1,
    b: 2,
    c:3
    }
然后,我的包装组件永远不会得到更新的道具。只有
Connect
组件才能获得更新的道具

然后,我通过将数据传播到一个新对象并传递到子组件来修改代码。然后它就完美地工作了

<Sample data={{ ...data }} />


第一种方法有什么问题?

问题与
连接无关。我相信这里的问题是您对对象
数据
所做的变异

在JavaScript中,我们知道这个简单的事实

y={a:1}
x=y;
console.log(x==y);//真的
x、 b=2;
console.log(x==y);//真的
要触发重新渲染,React希望您提供一个新对象,您可以通过以下方法之一实现

newData={…data,c:3};

newData=Object.assign({},data,{c:2});
当你这样做的时候,情况基本上是一样的


它会在每次重新渲染时创建一个新对象(即使您不需要它,因此不建议这样做)