反应-更改未使用的道具会重新渲染组件吗?

时间:2020-03-23 18:35:06

标签: javascript reactjs render parent prop

我是React的新手,我对重新渲染有疑问,但是我没有找到有关此特定案例的答案。

假设我有一个<Parent />组件和一个<Child myProp='10' />组件,并且Child组件在返回语句中不使用myProp属性,也没有与此相关的任何内容prop(换句话说,孩子将始终返回相同的html元素,而与数字prop无关),我只想使用该数字prop来标识该特定组件,以将其传递回事件处理程序中的父对象。如果该数字道具更改,子组件是否会重新显示?这是我的意思的简化代码示例:

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>
    )
}
    

每当我单击任何一个Child时,标识符prop都会发生变化,但是Child永远不会使用它来可视地呈现任何内容,它只会在单击时传递给事件处理程序。那么,在那种情况下,即使屏幕上没有任何变化,React也会重新渲染Child以解决道具更改吗?

一方面,我认为没有什么需要重新渲染的,因为html和css保持不变(虚拟和真实DOM保持不变,不是吗?),但是另一方面,内部组件是被修改,那么也许它必须重新呈现以将更改反映到组件上,尤其是在事件处理程序中?在这种情况下究竟会发生什么?

预先感谢

0 个答案:

没有答案