2016-03-05 51 views
5

我正在開發一個反應原生IOS應用程序,並且此應用程序有時會引發警告消息「setState(...)只能更新已安裝或掛載的組件。 ...「,我明白這個消息是關於什麼的,這是由很長一段時間的AJAX調用引起的。如何在底部禁用反應本機警告消息

考慮到這個警告不會對APP造成任何嚴重問題,我不想在此刻花費很多時間修復它,這個警告信息會在從開發服務器加載的模擬器和手機上顯示。我的問題是,警告消息是否仍會在產品模式下提示(從預捆綁文件加載)?如果它仍然顯示,如何從配置中禁用此警告消息?

謝謝。

+0

在釋放模式開發=假消息如下代碼沒有顯示,所以你的應用商店的用戶將看不到消息 –

回答

1

要禁用只的setState消息

的 「的setState(...)只能更新一安裝或安裝部件。」從4個可能的文件拋出:

  1. node_modules /反應/ DIST /反應與 - addons.js
  2. node_modules /反應/ DIST/react.js
  3. node_modules /反應/ LIB/ReactNoopUpdateQueue .js文件
  4. node_modules /反應/ lib中/ ReactUpdateQueue.js

我不知道是哪一個觸發你的,但你可以修改這些文件不要顯示警告。如果您的關注是針對您的用戶的,也就是說在發佈模式下,那麼dev標誌爲false,這意味着不會看到任何警告消息。如果您使用的預

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"]; 

要禁用所有警告

要禁用警告,只是改變這在你的AppDelegate.m捆綁文件,捆綁時必須將dev指定爲false:

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

這將工作,但也將關閉所有其他警告,其中一些是非常有用的 –

+0

非常感謝答覆,它的工作原理。 – mailme365

+0

任何人都知道Android的等價物是什麼jsCodeLocation = [NSURL URLWithString:@「http:// localhost:8081/index.ios.bundle?platform = ios&dev = false」]; – Podgeypoos

0

只是爲了回答您提問的問題,不,從預捆綁文件加載時(如使用TestFlight進行測試時),警告不會顯示。

7

更好的解決方案是在你的index文件中這樣寫:

console.disableYellowBox = true; 
1

要禁用僅此警告信息使用上可能的文件

console.ignoredYellowBox = ['Warning: setState(...)'];