Javascript 将道具类型与useEffect和i don';我不知道为什么useEffect可以';无法识别proptype的属性
我正在将分页组件从类重构到函数,以使用react钩子,并且useEffect无法读取名为propTypes和defaultProps的变量中名为Items和initialPage的属性。并在浏览器上显示此错误Javascript 将道具类型与useEffect和i don';我不知道为什么useEffect可以';无法识别proptype的属性,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我正在将分页组件从类重构到函数,以使用react钩子,并且useEffect无法读取名为propTypes和defaultProps的变量中名为Items和initialPage的属性。并在浏览器上显示此错误 TypeError: Cannot read property 'items' of undefined (anonymous function) src/components/Pagination.js:27 24 | 25 | useEffect((prevProps) =&
TypeError: Cannot read property 'items' of undefined
(anonymous function)
src/components/Pagination.js:27
24 |
25 | useEffect((prevProps) => {
26
> 27 | if (JSON.stringify(propTypes.items) !== JSON.stringify(prevProps.items)) {
| ^ 28 | setPage(propTypes.initialPage);
29 | }
30 | }, []);
这是我的密码
const propTypes = {
items: PropTypes.array.isRequired,
onChangePage: PropTypes.func.isRequired,
initialPage: PropTypes.number,
pageSize: PropTypes.number,
};
const defaultProps = {
initialPage: 1,
pageSize: 5,
};
function Pagination(props) {
const [pager, setPager] = useState({ pager: {} });
useEffect(() => {
if (propTypes.items && propTypes.items.length) {
setPage(propTypes.initialPage);
}
}, []);
useEffect((prevProps) => {
if (JSON.stringify(propTypes.items) !== JSON.stringify(prevProps.items)) {
setPage(propTypes.initialPage);
}
}, []);
我一直被困在这个问题中,所以希望我能从这里得到好的答案或任何反馈。非常感谢 即使我在if()中将propTypes.items更改为items,也会发生错误。只是让你知道。。!!你真的想检查道具类型,而不是实际值吗?另外,我不认为useEffect的回调会收到任何参数。我认为您在代码'if(props.items&&props.items.length)中的意思是这样的{`etc.您根本不应该在运行时访问
propTypes
。这只是调试模式下的一种类型检查机制,用于警告不正确使用props。您试图实现什么?请解释问题。@trixn items是获取数据的属性,我一直在使用它按页码和顺序显示数据东西。但由于我已经将其更改为useEffect from componentDidUpdate,它就不起作用了。我以前正常工作的代码在这里componentDidUpdate(prevProps){if(this.props.items!==prevProps.items){this.setPage(this.props.initialPage);}