我正在使用 React-Slick<Report />
在轮播中渲染组件。我想将每个<Report />
'sreportId
与查询参数同步。
例如,用户将能够通过转到查看特定报告,myapp.com/reports?id=1
并将其带到该特定“幻灯片”。
我遇到的问题是report
在幻灯片初始化之前加载数据。我找不到 react-slickonInit
或onReInit
.
我正在使用 React-Slick<Report />
在轮播中渲染组件。我想将每个<Report />
'sreportId
与查询参数同步。
例如,用户将能够通过转到查看特定报告,myapp.com/reports?id=1
并将其带到该特定“幻灯片”。
我遇到的问题是report
在幻灯片初始化之前加载数据。我找不到 react-slickonInit
或onReInit
.
我没有使用onInit
or onReInit
,而是使用了initialSlide
设置并使用了componentDidUpdate()
。
componentDidUpdate = (prevProps, prevState) => {
const queryParams = qs.parse(this.props.location.search)
if (prevProps.reports !== this.props.reports) {
const sortedReports = this.sortReportsByDate(this.props.reports)
this.setSlideIndex(sortedReports.findIndex(i => i.id === parseInt(queryParams.reportId, 10)))
this.setQueryParams({
reportId: this.sortReportsByDate(this.props.reports)[this.state.slideIndex].id
})
}
if (prevState.slideIndex !== this.state.slideIndex) {
this.setQueryParams({
reportId: this.sortReportsByDate(this.props.reports)[this.state.slideIndex].id
})
}
}
和设置:
const settings = {
...
initialSlide: reportsSortedByDate.findIndex(i => i.id === parseInt(queryParams.reportId, 10))
...
}
我希望有人觉得这很有用!