我读到componentDidMount
被调用一次以进行初始渲染,但我看到它被多次渲染。
看来我创建了一个递归循环。
- componentDidMount 调度操作以获取数据
- 收到数据后,它会触发成功操作以将数据存储在 redux 状态。
- 父 react 组件连接到 redux 存储,并且具有
mapStateToProps
在上述步骤中刚刚更改的条目 - parent 呈现子组件(通过变量以编程方式选择)
- 子组件的 componentDidMount 再次被调用
- 它调度操作以获取数据
我认为这就是正在发生的事情。我可能是错的。
我怎样才能停止循环?
这是以编程方式呈现子组件的代码。
function renderSubviews({viewConfigs, viewConfig, getSubviewData}) {
return viewConfig.subviewConfigs.map((subviewConfig, index) => {
let Subview = viewConfigRegistry[subviewConfig.constructor.configName]
let subviewData = getSubviewData(subviewConfig)
const key = shortid.generate()
const subviewLayout = Object.assign({}, subviewConfig.layout, {key: key})
return (
<div
key={key}
data-grid={subviewLayout}
>
<Subview
{...subviewData}
/>
</div>
)
})
}