我创建了一个清单组件,默认情况下所有检查都为FALSE
,因为我单击以检查设置了组件状态的任何一项并将状态发送到Store reducer
。这样做之后问题就来了。问题是:-我想借助MyComp
将数据存储在另一个组件(mapStateToProps
)中。但是,componentWillReceiveProps
并未在我更改清单数据时触发。
我搜索了这个问题,发现反应无法深入检查即将到来的道具。我尝试使用单个toggle(true/false)
道具,它对我有用。
这是MyComp.js,它使用商店状态(切换,平台)作为道具
class MyComp extends React.Component{
componentWillReceiveProps=(nextProps)=>{
console.log(nextProps);
// this function is running only when the toggle is changing but not running when I change CheckList State.
}
render()(<div></div>);
}
const mapStateToProps = (State) => {
return {
platforms:State.configuration.platforms!==undefined?State.configuration.platforms:[],//<-- Not triggered componentWillReceiveProps
toggle:State.toggle //<-- it triggered componentWillReceiveProps
}
}
export default connect(mapStateToProps)(FeatureEvents);
...
这是来自商店的道具。在这种情况下,只有选定的属性正在更改。
platforms props : [
{
background: "https:image/file/59fd566788f3ac79a46ef20d/Android.png",
description: "Operating system used by various brands",
icon: "https://duj87royd3ze0.cloudfront.net/uploads/image/android.png",
id: "587f1e2f14c49f4aeb4d79d4",
price_multiplier: 1.5,
selected: true,
title: "Android",
week_multiplier: 1.1,
},
{..},
...
{..}
]
预期: 当我通过在CheckList中选中或取消选中“ selected ”属性值(是/否)时,我想在 MyComp 中触发componentWillReceiveProps。
当前状态: 反应不触发componentWillReceiveProps。因为React无法识别深度检查。
我该如何编码,以便React能够开始对即将到来的道具进行深入检查?