Я создал компонент Checklist , в котором все проверки по умолчанию FALSE
, так как я щелкаю, чтобы проверить любой из них, устанавливаю состояние компонента и отправляю State в Store reducer
.И после этого проблема приходит.Проблема в том, что: - Я хочу сохранить данные в другом компоненте (MyComp
) с помощью mapStateToProps
.Но componentWillReceiveProps
не запускается, так как я изменил данные контрольного списка.
Я искал эту проблему и обнаружил, что React не может выполнить глубокую проверку предстоящих операций.Я пробовал с одним toggle(true/false)
реквизитом, и у меня это работает.
Это MyComp.js, который использует Store State (переключатель, платформы) в качестве реквизита
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,
},
{..},
...
{..}
]
ОЖИДАЕТСЯ: Поскольку я изменил значение свойства " selected " (true / false), отметив или не отметив его в CheckList, я хочу вызватьcomponentWillReceiveProps в MyComp .
ТЕКУЩИЙ СТАТУС: Реагирует, не вызывая компонентWillReceiveProps.Поскольку React не может идентифицировать глубокую проверку.
Как я могу кодировать, чтобы React начал глубокую проверку предстоящих операций?