gpt4 book ai didi

javascript - 如何强制React组件重新渲染?

转载 作者:行者123 更新时间:2023-11-28 17:04:51 25 4
gpt4 key购买 nike

我们正在开发一个 POC,其中我们显示属性列表,并在单击属性标题时在引导模式弹出窗口中显示相应的属性详细信息。

我们有以下具有层次结构的 React 组件:

1 个属性框

1.1 属性列表

1.1.1 属性信息

1.2 Bootstrap Modal 弹出 HTML 中的 PropertyDetails。

PropertyBox的render方法包含以下代码。

render() {
return (
<div id="property-box">
<PropertyListComponent>
<div class="modal fade" id="myModal">
<div class="modal-dialog modal-lg modal-box-large">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body modal-max-height">
{propertyDetailsElement}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>;

在属性详细信息组件中有两个 Bootstrap 4 选项卡1. 概述(默认激活)2.联系我们

问题是,

假设我通过单击“属性”标题打开了属性详细信息弹出窗口,然后转到“联系我们”选项卡并关闭了弹出窗口。

之后,我单击“下一个属性标题”以查看其属性详细信息。在这种情况下,弹出窗口将打开,显示相应的属性详细信息,但“联系我们”选项卡显示为事件状态。

为了解决这个问题,我尝试使用方法“componentWillReceiveProps”重新渲染PropertyDetails组件

class PropertyDetail extends React.Component {

constructor(props) {
super(props)
// in state we have stored the images as well as current index of image and translate value
this.state = {
property: this.props.data
}
}

componentWillReceiveProps(nextProps) {
this.setState({
property: nextProps.data
})
}
render() {return (<HTML for Proeperty Details>);
}
}

我已经交叉验证了每次单击 PropertyTitle 打开 Popup 时是否都会调用方法“componentWillReceiveProps”,是的,每次都会调用该方法。但问题并没有解决。

我希望每次打开“属性详细信息”弹出窗口时,默认事件选项卡应该是“概述”选项卡。

有什么解决办法吗?

最佳答案

有两种方法可以实现这一目标。

1) 当您更改属性时添加一个名为的默认函数

componentWillUnMount 它将从 dom 中删除组件并重置其属性

或者你可以使用

在您的组件中,您可以调用 this.forceUpdate() 方法来强制重新渲染。

2)第二个是每当您更改属性时将 key 传递给组件,它将更新传递给组件的 key ,因此每次打开属性新 key 时,都会通过,新的组件实例将被打开,您将不会再遇到这个问题

关于javascript - 如何强制React组件重新渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56127197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com