我是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保持不变,不是吗?),但是另一方面,内部组件是被修改,那么也许它必须重新呈现以将更改反映到组件上,尤其是在事件处理程序中?在这种情况下究竟会发生什么?
预先感谢