2016-11-22 29 views
8

Tôi có một kịch bản mà tôi chuyển dữ liệu từ bộ giảm tốc vào trạng thái phản ứng của tôi.Kiểm tra không xác định trong React

dữ liệu:

{ 
    "id": 1, 
    "title": "Test", 
    "content": { 
     "body": "sdfsdf" 
     "image": "http://example.com" 
    } 
} 

Sử dụng componentWillRecieveProps, công trình này một cách hoàn hảo để lấy danh hiệu.

componentWillReceiveProps(nextProps) { 
    this.setState({ 
     title: nextProps.blog.title, 
    }) 
} 

Tuy nhiên, tôi đang gặp khó khăn khi truy xuất các trường lồng nhau. Khi tôi làm điều này:

componentWillReceiveProps(nextProps) { 
    console.log("new title is", nextProps.blog.title); 
    console.log("new body content is", nextProps.blog.content["body"]); 
    this.setState({ 
     title: nextProps.blog.title, 
     body: nextProps.blog.content["body"] 
    }) 
} 

tôi nhận được lỗi này:

enter image description here

Các lỗi của một cơ thể không xác định sẽ biến mất sau khi tôi nhấp vào trình gỡ lỗi và nội dung được tải. Có anyway tôi có thể chống lại vấn đề này?

tôi đã cố gắng để kiểm tra xác định như thế này:

if (typeof nextProps.blog.content["body"] != 'undefined'){ 

Nhưng điều này không làm việc, hoặc và tôi tin rằng đó là bởi vì blog là không xác định.

+1

Tôi nghĩ sai lầm của bạn là của bạn "cơ thể" được lồng vào bên trong "nội dung" – naomi

+0

@naomi cảm ơn! Tôi đã sửa mã của mình thành blog.content thay vì chỉ nội dung, đó là ý của bạn phải không? Tôi vẫn nhận được lỗi tương tự. – lost9123193

Trả lời

5

Những gì bạn có thể làm là kiểm tra xem bạn đạo cụ được xác định ban đầu hay không bằng cách kiểm tra nếu nextProps.blog.content là undefined hay không kể từ khi cơ thể bạn đang lồng vào bên trong nó như

componentWillReceiveProps(nextProps) { 

    if(nextProps.blog.content !== undefined && nextProps.blog.title !== undefined) { 
     console.log("new title is", nextProps.blog.title); 
     console.log("new body content is", nextProps.blog.content["body"]); 
     this.setState({ 
      title: nextProps.blog.title, 
      body: nextProps.blog.content["body"] 
     }) 
    } 
} 

Bạn không cần phải sử dụng loại để kiểm tra không xác định , chỉ cần các nhà điều hành chặt chẽ !== mà so sánh giá trị theo loại của họ cũng như giá trị

để kiểm tra không xác định, bạn cũng có thể sử dụng toán tử typeof như

typeof nextProps.blog.content != "undefined" 
+1

Tôi hiểu rồi, tôi đã đặt không xác định trong các trích dẫn. Điều này đã làm các trick. Cảm ơn! – lost9123193

+1

Không sao cả. Vui vẻ giúp đỡ –

0

tôi là khuôn mặt cùng một vấn đề ..... Và tôi có giải pháp bằng cách sử dụng typeof()

if (typeof(value) !== 'undefined' || value != null) { 
     console.log('Not Undefind or Not Null') 
    } else { 
     console.log('Undefind or Null') 
} 

Bạn phải có để sử dụng typeof() để xác định undefined

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