2016-02-24 3 views
2

Я знаю, что React действительно отличает this.state. Но когда вы находитесь в дочернем компоненте, diff выполняется на this.props. Поэтому мне было интересно, как отличается система diff, если значение prop является функцией? Является ли это плохой практикой (как в случае плохого для перфоратора или чего-то еще), если я помещаю функцию в this.props или this.state?Хорошая практика для передачи функции в реквизитах?

+3

Если вы передаете реквизит 'function' в детском компоненте diff алгоритм будет постоянно запускаться. Если вам это интересно, вы можете реализовать 'shouldComponentUpdate', где вы можете игнорировать свойства, содержащие' functions'. Пример: https://jsfiddle.net/69z2wepo/32508/, вы можете поэкспериментировать с этим примером, просто комментируйте 'shouldComponentUpdate' –

+0

Интересное спасибо очень большое спасибо @ Alexander. Я изучу это, если вы можете переместить это, чтобы ответить Мне хотелось бы принять. – Noitidart

ответ

2

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

Вы можете экспериментировать с this example

-1

Пропустите несвязанную функцию компоненты ребенка, и у ребенка использовать метод экземпляра, например:

class Container extends Component { 

    deleteItem(index) { 
     actionThatDeletesSomething(index); 
    } 

    render(){ 
     return(
      <ChildComponent deleteItem={ this.deleteItem } /> 
     ) 
    } 
} 


class ChildComponent extends Component { 

    render(){ 
     return(
      <a onClick={ this.props.deleteItem(index) } /> 
     ) 
    } 
} 
+1

Не могли бы вы объяснить это немного больше, я не понимаю :( – Noitidart

+1

отредактировал. Дайте мне знать, если это ясно. –

+0

Ах, спасибо, это интересно, мне нужно больше думать об этом, я не понимаю его полностью, но эта недостаточность с моей стороны . Сообщить об этом после того, как я подумаю об этом :) – Noitidart

Смежные вопросы