Реагирует - Заменяет ли неиспользуемый реквизит компонент? - PullRequest
0 голосов
/ 23 марта 2020

Я новичок в React и у меня есть сомнения по поводу повторного рендеринга, и я не нашел ответа относительно этого конкретного случая c.

Давайте предположим, что у меня есть компонент <Parent /> и компонент <Child myProp='10' />, и что дочерний компонент не использует этот оператор myProp в выражении return или что-либо связанное с этим объектом, (другими словами, потомок всегда будет возвращать одни и те же элементы html независимо от того, какой это номер пропа), я просто хочу использовать этот номер проп, чтобы идентифицировать этот конкретный c компонент, чтобы передать его родителю в обработчик события. Если это число изменится, будет ли переопределен дочерний компонент? Вот упрощенный пример кода того, что я имею в виду:

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = { 
      number1: 5,
      number10000: 20
    };
    this.eventHandler=this.eventHandler.bind(this);
  };

  eventHandler(argGivenByChild){
    //setState depending on which Child was clicked, argGivenByChild will be the identifier passed to the Child.
  }
  render() {
    return (
      <div>
        <Child identifier={this.state.number1} clickHandler={this.eventHandler}/>
        <Child identifier={this.state.number10000} clickHandler={this.eventHandler}/>
      </div>
    )
  }
}  
  
function Child(props) {
    return (
      <div onClick={()=>props.clickHandler(props.identifier)}> 
        <h1>Some heading</h1>
        <p>Some paragraph</p>
      </div>
    )
}
    

Всякий раз, когда я щелкаю по любому из дочерних элементов, опора идентификатора меняется, но дочерний элемент никогда не использует его для визуальной визуализации чего-либо, в любом случае он передается в обработчик событий только тогда, когда нажал на. Таким образом, в этом случае React повторно передает Child, чтобы объяснить изменение реквизита, даже если на экране ничего не изменилось?

С одной стороны, я думаю, что пересматривать нечего, поскольку html и css остаются одинаковыми (Виртуальный и реальный DOM остаются одинаковыми, не так ли?), Но на С другой стороны, внутренне компонент модифицируется, поэтому, возможно, он должен перерисоваться, чтобы отразить это изменение для компонента, особенно в обработчике событий? Что именно происходит в этом случае?

Заранее спасибо

...