Javascript 反应:避免在状态更改时重新呈现组件
这个小程序在您单击的位置绘制一个随机形状。 当你点击某个形状时,它应该被删除Javascript 反应:避免在状态更改时重新呈现组件,javascript,reactjs,Javascript,Reactjs,这个小程序在您单击的位置绘制一个随机形状。 当你点击某个形状时,它应该被删除 删除是可行的,但之后所有形状都会重新渲染。如何避免形状的重新渲染?您可以尝试此操作,生成id并将该id用作键,我认为React DOM会根据键渲染元素: constructor(props) { super(props); this.id = 0; // add id .... } addShape(e) { ... updatedShapes.push({ x: e.client
删除是可行的,但之后所有形状都会重新渲染。如何避免形状的重新渲染?您可以尝试此操作,生成id并将该id用作键,我认为React DOM会根据键渲染元素:
constructor(props) {
super(props);
this.id = 0; // add id
....
}
addShape(e) {
...
updatedShapes.push({
x: e.clientX,
y: e.clientY,
id: this.id++
});
...
}
randomShape(shape)
{
...
<circle ... key={shape.id} .../>;
...
}
constructor(props){
超级(道具);
this.id=0;//添加id
....
}
addShape(e){
...
updatedShapes.push({
x:e.clientX,
y:e.clientY,
id:this.id++
});
...
}
随机形状(形状)
{
...
;
...
}
您可以尝试此操作,生成id并将该id用作键,我认为React DOM根据键呈现元素:
constructor(props) {
super(props);
this.id = 0; // add id
....
}
addShape(e) {
...
updatedShapes.push({
x: e.clientX,
y: e.clientY,
id: this.id++
});
...
}
randomShape(shape)
{
...
<circle ... key={shape.id} .../>;
...
}
constructor(props){
超级(道具);
this.id=0;//添加id
....
}
addShape(e){
...
updatedShapes.push({
x:e.clientX,
y:e.clientY,
id:this.id++
});
...
}
随机形状(形状)
{
...
;
...
}
其他形状在重新渲染时也会被删除吗?所以不用担心。这是React的一个原理,即每当状态发生变化时,组件及其子组件都会重新招标。但是,如果您需要自己处理重新渲染,则可以使用React提供的shouldComponentUpdate
函数。当React组件将要重新渲染时,会调用它。当它重新渲染时,其他形状也会被删除吗?所以不用担心。这是React的一个原理,即每当状态发生变化时,组件及其子组件都会重新招标。但是,如果您需要自己处理重新渲染,则可以使用React提供的shouldComponentUpdate
函数。每当React组件将要重新渲染时,都会调用它。