Javascript 修改道具对象时,连接不更改子组件的道具
嗨,我有一个组件样本,用connect like包装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(state => ({
....
....
}), {})
export default class Sample extends Component {
....
....
}
我从另一个组件导入样本,并将一个prop namedata
作为
....
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});
当你这样做的时候,情况基本上是一样的
它会在每次重新渲染时创建一个新对象(即使您不需要它,因此不建议这样做)