2016-03-05 18 views
5

Tôi đang làm việc trên ứng dụng iOS có phản ứng, và ứng dụng này đôi khi sẽ nâng cao thông báo Cảnh báo "setState (...) Chỉ có thể cập nhật thành phần được gắn hoặc lắp. ... ", tôi hiểu thông điệp là gì, nó được gây ra bởi cuộc gọi AJAX trong thời gian dài.Làm thế nào để vô hiệu hóa thông điệp cảnh báo tự nhiên phản ứng ở phía dưới

Xem xét cảnh báo này sẽ không gây ra bất kỳ vấn đề nghiêm trọng nào đối với APP, tôi không muốn tốn nhiều thời gian để khắc phục nó vào lúc này, thông báo cảnh báo này sẽ hiển thị trong cả trình mô phỏng và điện thoại di động trong khi tải từ máy chủ phát triển. Câu hỏi của tôi là liệu thông báo cảnh báo vẫn sẽ nhắc trong chế độ sản phẩm (Tải từ tệp được nhóm sẵn)? Nếu nó vẫn sẽ hiển thị, làm thế nào để vô hiệu hóa thông điệp cảnh báo này từ cấu hình?

Cảm ơn.

+0

trong chế độ phát hành dev = false những thông điệp không được hiển thị, vì vậy người dùng cửa hàng ứng dụng của bạn sẽ không thấy thông báo –

Trả lời

1

Để vô hiệu hóa chỉ được thông báo setstate

Các "setstate (...) Chỉ có thể cập nhật một thành phần chưa gắn hoặc lắp." được ném từ 4 file có thể:

  1. node_modules/phản ứng/dist/phản ứng-với-addons.js
  2. node_modules/phản ứng/dist/react.js
  3. node_modules/phản ứng/lib/ReactNoopUpdateQueue .js
  4. node_modules/phản ứng/lib/ReactUpdateQueue.js

tôi không biết cái nào kích hoạt của bạn, nhưng bạn có thể chỉnh sửa những tập tin s không hiển thị cảnh báo. Nếu mối quan tâm của bạn dành cho người dùng của bạn, đó là để nói trong chế độ phát hành, sau đó cờ dev là sai có nghĩa là sẽ không thấy bất kỳ thông báo cảnh báo nào.

Để vô hiệu hóa tất cả các cảnh báo

Để vô hiệu hóa các cảnh báo, chỉ cần thay đổi này trong AppDelegate.m của bạn:

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; 

để

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=false"]; 

Nếu bạn đang sử dụng trước tệp được nhóm, bạn sẽ phải chỉ định dev là false khi bundling:

react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios 
+0

sẽ hoạt động, nhưng cũng sẽ tắt tất cả các cảnh báo khác, một số cảnh báo rất hữu ích –

+0

Cảm ơn rất nhiều vì đã trả lời, nó hoạt động. – mailme365

+0

bất kỳ ai biết tương đương với Android là gì jsCodeLocation = [URL của NSURLWithString: @ "http: // localhost: 8081/index.ios.bundle? Platform = ios & dev = false"]; – Podgeypoos

0

Chỉ để trả lời cho câu hỏi bạn đã hỏi, không, cảnh báo sẽ không hiển thị khi bạn tải từ tệp được nhóm trước (như khi thử nghiệm bằng TestFlight).

7

các giải pháp tốt hơn là để viết những dòng này trong index tập tin của bạn:

console.disableYellowBox = true; 
1

Để vô hiệu hóa chỉ thông điệp cảnh báo này sử dụng đoạn mã sau vào file có thể

console.ignoredYellowBox = ['Warning: setState(...)']; 
Các vấn đề liên quan