2016-02-20 2 views
0

Я упаковываю компонент jQuery Flotchart в качестве реагента, и мне нужно вызвать метод экземпляра диаграммы при изменении свойств компонента.React reconciliation - props diff

В результате у меня есть shouldComponentUpdate реализация крюка, которая сравнивает новые реквизиты со старыми.

Однако, как правило, React сам сравнивает новые компоненты реквизита со старыми в качестве части процесса согласования, поэтому React уже должен иметь информацию о том, изменились ли некоторые реквизиты. Это означает, что если я выполняю неглубокое сравнение реквизита в shouldComponentUpdate, я дублирую функциональность, уже встроенную в React, правильно? Если да, то как мне получить информацию о том, изменились ли свойства из React, без необходимости дублировать его в shouldComponentUpdate?

ответ

0

Реагировать не делает какое-либо неглубокое сравнения реквизита, его обеспечивает компонентные крюки жизненного цикла, чтобы добавить логику внутри shouldComponentUpdate на основе реквизита Ot состояния или пользовательскую логику. Тем не менее, если ваш компонент pureComponent реагировать делает неглубокое сравнение для вас на основе реквизита или состояния.

Всякий раз, когда реквизит/изменение состояния реагируют на вызов пары метода крюка перед вызовом функции рендеринга.

componentWillReceiveProps() ---> shouldComponentUpdate() ---> componentWillUpdate() ---> визуализации() ---> componentDidUpdate()

0

Функция, которую вы ищете, является componentWillReceiveProps. Согласно реакции documentation, этот метод получит следующий набор свойств компонента как nextProps.

Вы можете сравнить свойства как

if (nextProps,myProperty == this.props.myProperty) {//doSomething} 
Смежные вопросы