Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将道具类型与useEffect和i don';我不知道为什么useEffect可以';无法识别proptype的属性_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript 将道具类型与useEffect和i don';我不知道为什么useEffect可以';无法识别proptype的属性

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) =&

我正在将分页组件从类重构到函数,以使用react钩子,并且useEffect无法读取名为propTypes和defaultProps的变量中名为Items和initialPage的属性。并在浏览器上显示此错误

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);}