【发布时间】:2019-01-30 13:00:48
【问题描述】:
我有一个轮播组件,它接收轮播项目作为道具。我将当前活动的轮播项目存储在轮播组件的状态中。轮播本身是一个滑块,由 GSAP 可拖动控制。轮播项目的数量可能会改变,然后我想重置状态以使第一个项目处于活动状态。如何使用当前的 React 版本实现这一点?我试过了:
static getDerivedStateFromProps(props, state) {
if (state.openItem > props.items.length) {
return {
openItem: 0,
};
}
return null;
}
但这只会在当前项目大于项目总数时重置。我想要一种可以比较 prevProps 的方法,以便检查项目总数是否已更改。如果我在 componentDidUpdate 中设置状态,可能会导致无限渲染循环。我不想将状态拉出到父组件,因为这会使父组件需要太多功能才能使轮播组件可重用。
【问题讨论】:
标签: javascript reactjs