Lỗi TypeError: Cannot read property 'string' of undefined của React
Không biết forum mình có ai rành về React không cho mình hỏi với, mình đang học về React và có một đoạn code như này:
import React,{Component, PropTypes} from ‘react’;
import Card from ‘./Card’;
import ‘./App.css’;
class List extends Component{
render(){…}
};
List.propTypes = {
title: PropTypes.string.isRequired,
cards: PropTypes.arrayOf(PropTypes.object)
};
export default List;
Sau khi chạy thì trên trình duyệt lại báo lỗi undefined của PropTypes : TypeError: Cannot read property ‘string’ of undefined
mà không biết sửa thế nào, mình đã search nhiều chỗ rồi mà vẫn không sửa được, ai có cách gì ko giúp mình với, Many thanks <3
Từ phiên bản 15.5 thì PropTypes đã được tách ra khỏi React core, đưa vào gói
prop-types
rồi.Bạn có thể tham khảo chi tiết ở đây: https://reactjs.org/docs/typechecking-with-proptypes.html
Nếu bạn hứng thú với việc sử dụng PropTypes để type check thì mình nghĩ bạn nên dùng Flow: https://flow.org/
Flow sẽ giúp bạn type check mọi thứ liên quan đến dự án mà bạn mong muốn luôn (kể cả các helper function) chứ không riêng gì props hay state trong các react component.
Tham khảo thêm: http://blog.rstankov.com/flow-as-replacement-for-proptype/
Nguyên nhân thì đã rõ rồi, ProTypes đã bị remove khỏi React.
Mình viết chỗ này để bạn nắm được quá trình debug, lỗi hiện ra là
Cannot read property 'string' of undefined
, trong đoạn code trên có đoạnPropTypes.string.isRequired
, thì nó báo lỗi chính là dòng này.Có thể hiểu dòng code ấy là
undefined.string.isRequired
, từ đấy bạn sẽ hiểu làPropTypes
đangundefined
. Khi đó để chắc chắn có thể gán window.PropTypes = PropTypes, rồi console.log ra xem nó có phảiundefined
hay không.Lúc đã chắc chắn rồi thì bạn có thể google
PropTypes undefined react
sẽ có luôn kết quả đầu trang google.