【发布时间】:2021-12-31 09:49:33
【问题描述】:
我有以下代码
const IssuesItems: React.FC<IProps> = function ({ issuesProp }) {
const [issues] = useState<any>([...issuesProp]);
const [paginatedIssues, setPaginatedIssues] = useState<any>([]);
const [currentPage, setCurrentPage] = useState<any>(1);
const [itemsPerPage, setItemsPerPage] = useState<any>(13);
const [numberOfPages, setNumberOfPages] = useState<any>(null);
useEffect(() => {
// set the number of pages
const numberOfPages = Math.ceil(issues.length / itemsPerPage);
console.log(numberOfPages);
setNumberOfPages(numberOfPages);
}, []);
useEffect(() => {
console.log(numberOfPages);
const newArr = splitArray(issues, numberOfPages);
console.log('new arr');
console.log(newArr);
}, [numberOfPages]);
问题是,第二个useEffect在加载时触发,当numberOfPages为null时,不应该在第一次触发setNumberOfPages后才触发吗?
我可以解决这个问题
useEffect(() => {
if (numberOfPages != null) {
const newArr = splitArray(issues, numberOfPages);
console.log('new arr');
console.log(newArr);
}
}, [numberOfPages]);
但它应该只在 numberOfPages 状态被 setNumberOfPages 调用修改后触发吗?
【问题讨论】:
-
在第二个数组中添加引用意味着,在 componentDidMount 和第二个项目的任何更改之后运行效果!我认为最好的解决方案是添加
if来检查null
标签: reactjs