2015-10-21 24 views
5

Tôi có thể đang làm điều gì đó ngu ngốc, nhưng tôi không thể có được các trình mặc định để làm việc.React defaultProps không hoạt động

export default class MyClass extends Component{ 
    static propTypes = { 
    name: React.PropTypes.string.isRequired, 
    field: React.PropTypes.object.isRequired 
    } 

    static defaultProps = { 
    field: { value: '', errors: [] } 
    } 

    render() { 
    // blah blah 
    } 
} 

tôi có mã dựa trên this.props.field.valuethis.props.field.errors.length và tất cả các thử nghiệm của tôi được thổi lên với TypeError: 'undefined' is not an object (evaluating 'this.props.field.errors.length'), không nên đạo cụ mặc định của tôi cho nó một giá trị mặc định? Ban đầu, giá đỡ field của tôi là một đối tượng trống.

Trả lời

9

Ban đầu, giá trị field chống đỡ của tôi là đối tượng trống.

Đạo cụ mặc định chỉ được sử dụng nếu không có giá trị nào được truyền cho giá đỡ. Nó là hợp nhất nông, không phải là một sự hợp nhất sâu sắc.

Từ (tôi nhấn mạnh) docs:

Kết quả của getDefaultProps() sẽ được lưu trữ và sử dụng để đảm bảo rằng this.props.value sẽ có giá trị nếu nó không được xác định bởi các thành phần cha mẹ.

+0

Nên có RTFM cẩn thận hơn một chút, sẽ phải suy nghĩ lại cách tiếp cận của tôi. – Lee

+1

đây là điểm mấu chốt "Đạo cụ mặc định chỉ được sử dụng nếu không có giá trị nào được truyền cho giá đỡ. Nó là vùng hợp nhất cạn, không phải là sự hợp nhất sâu". – Wayou

+0

Dường như tham chiếu liên kết đã lỗi thời. Vui lòng tham khảo trang này để thay thế. https://reactjs.org/docs/react-without-es6.html#declaring-default-props –

Các vấn đề liên quan