01/10/2018, 15:32

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

Son Tran viết 17:32 ngày 01/10/2018

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/

viết 17:38 ngày 01/10/2018

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ạn PropTypes.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 đang undefined. Khi đó để chắc chắn có thể gán window.PropTypes = PropTypes, rồi console.log ra xem nó có phải undefined 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.

Bài liên quan
0