反応ネイティブを0.42から0.43にアップグレードしようとしましたが、重大なエラーや競合はなく、 しかし、私はシミュレータで私のアプリケーションを実行すると、画面の下部に警告ボックス(黄色のもの)をクリックすると、突然アプリケーションがクラッシュします。 ReactNativeはエラーログを出力しないので、xcodeで試してみました。 エラーログは次のとおりですアップグレード後のネイティブ0.43に反応します:警告ボックス(下の黄色のボックス)をクリックするとアプリケーションがクラッシュします
2017-04-12 19:18:06.838 [error][tid:main][UIView+React.m:173] Invalid
layout for (15)<RCTScrollView: 0x7ffa34e3cb70; reactTag: 15; frame = (0
233; 414 0); clipsToBounds = YES; layer = <CALayer: 0x600000223fc0>>.
position: {207, nan}. bounds: {{0, 0}, {414, nan}}
2017-04-12 19:18:06.844 MyProject[17665:385202] *** Terminating app due
to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer
position contains NaN: [0 nan]'
*** First throw call stack:
(
0 CoreFoundation 0x0000000112136d4b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x0000000110b9921e objc_exception_throw + 48
2 CoreFoundation 0x00000001121a02b5 +[NSException raise:format:] + 197
3 QuartzCore 0x00000001146aef92 _ .ZN2CA5Layer12set_positionERKNS_4Vec2IdEEb + 152
4 QuartzCore 0x00000001146af107 -[CALayer setPosition:] + 44
5 QuartzCore 0x00000001146af772 -[CALayer setFrame:] + 650
6 UIKit 0x0000000114d079b4 -[UIWebDocumentView _notifyContentHostingLayersOfScaleChange] + 111
7 UIKit 0x0000000114d02b61 -[UIWebDocumentView setFrame:] + 287
8 UIKit 0x00000001150dfc95 -[UIWebBrowserView setFrame:] + 199
9 UIKit 0x0000000114d50fc9 -[UIWebView _frameOrBoundsChanged] + 508
10 UIKit 0x0000000114d51096 -[UIWebView setFrame:] + 166
11 MyProject 0x000000010ff121d9 -[RCTWebView layoutSubviews] + 185
12 UIKit 0x0000000114a8bab8 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1237
13 QuartzCore 0x00000001146b8bf8 -[CALayer layoutSublayers] + 146
14 QuartzCore 0x00000001146ac440 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
15 QuartzCore 0x00000001146ac2be _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
16 QuartzCore 0x000000011463a318 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 280
17 QuartzCore 0x00000001146673ff _ZN2CA11Transaction6commitEv + 475
18 QuartzCore 0x0000000114667d6f _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 113
19 CoreFoundation 0x00000001120db267 CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23
20 CoreFoundation 0x00000001120db1d7 __CFRunLoopDoObservers + 391
21 CoreFoundation 0x00000001120bff8e __CFRunLoopRun + 1198
22 CoreFoundation 0x00000001120bf884 CFRunLoopRunSpecific + 420
23 GraphicsServices 0x0000000117c3ea6f GSEventRunModal + 161
24 UIKit 0x00000001149c6c68 UIApplicationMain + 159
25 MyProject 0x000000010fe3c5cf main + 111
26 libdyld.dylib 0x000000011639b68d start + 1
27 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
ありますか?
更新日: ios/buildフォルダを削除するだけでクラッシュが解決されました! 私は新しい質問があります。黄色の警告ボックスをクリックすると、画面内のビューが消え、警告ボックスを閉じて再び表示されます。私は、警告ボックスが半透明であると信じて、ネイティブの0.42に反応するまで、黄色のボックスを通して私の画面内のビューを見ることができました。
私は反応ネイティブinitを使って全く新しいプロジェクトを試みました。
export default class Test extends Component {
render() {
const data = [1,2,3,4,5];
return (
<View style={{flex: 1}} onLayout={e =>console.log(e.nativeEvent.layout.height)}>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<ScrollView style={styles.container} onLayout={(e) => console.log(e.nativeEvent.layout.height)}>
<View style={{backgroundColor: 'red', flex: 1}}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
{data.map(d => <Text>{d}</Text>)}
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
</View>
</ScrollView>
</View>
);
}
}
上記のコードは、data.map関数から返されたビューで 'key prop'に関する警告メッセージを生成します。 最大化するために黄色のボックスをクリックすると、2つのonLayout関数はボックスを閉じると再び '0'と実際の値を出力します。 反応原産であることを意図していますか?
関連するコードも共有してください。 – dmorrow
@dmorrow申し訳ありませんが、これは警告ボックスをクリックしたときのエラーです。どのようなコードですか? – hjh5696
@dmorrow質問を更新しました – hjh5696