[解決済み] 構造化小道具の割り当てを使用しなければならない [重複] 。
2022-03-04 06:27:18
質問
React Nativeのプロジェクトで、このコードでEslintを使っています。
export default class AuthLoadingScreen extends React.Component {
constructor() {
super();
this.bootstrapAsync();
}
bootstrapAsync = async () => {
const userToken = await AsyncStorage.getItem('userToken');
this.props.navigation.navigate(userToken ? 'App' : 'Auth');
};
render() {
return (
<View style={styles.container}>
<ActivityIndicator />
<StatusBar barStyle="default" />
</View>
);
}
}
Eslintは、"Must use destructuring props assign"という警告を出しました。私は、割り当てを
const navigation = this.props;
navigation.navigate(userToken ? 'App' : 'Auth');
しかし、エラーが発生します: "undefined is not an object"
EDITです。 にコンストラクタを変更しました。
constructor(props) {
super(props);
this.bootstrapAsync(props);
}
これでエラーなしでコードが実行されるようになりました
解決方法は?
このようにすればいいのです。
const { navigation } = this.props;
navigation.navigate(userToken ? 'App' : 'Auth');
あるいは、もう1つレバーを深くしたい場合。
const { navigation: { navigate } } = this.props;
navigate(userToken ? 'App' : 'Auth');
しかし、その場合、ナビゲーションオブジェクトを定義する必要があります。ただし、構造化解除オブジェクトにデフォルト値を与えることは可能です。
例
const { navigation: { navigate } = {} } = this.props;
これでナビゲーションは未定義の場合、空のオブジェクトになります。
関連
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】Javascript - ERR_CONTENT_LENGTH_MISMATCH
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?
-
[解決済み】SyntaxError: 期待された式が、'<'を得た。
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み】 {this.props.children} に props を渡すには?}
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】TypeError: 'undefined'はオブジェクトではありません。
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする