Как я могу глубоко проверить nextProps, которые приходят из магазина Redux? - PullRequest
0 голосов
/ 11 июля 2019

Я создал компонент 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 начал глубокую проверку предстоящих операций?

...