Я новичок в 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 остаются одинаковыми, не так ли?), Но на С другой стороны, внутренне компонент модифицируется, поэтому, возможно, он должен перерисоваться, чтобы отразить это изменение для компонента, особенно в обработчике событий? Что именно происходит в этом случае?
Заранее спасибо