これはおそらくかなり基本的な質問だとは思いますが、私は ES6 に精通しておらず、次のような構文に遭遇しました。
const { rootStore: { routerStore } } = this.props;
次のようなことが何を意味するのか理解しています:
const { rootStore } = this.props;
(のrootStore
プロパティからconst を作成します)。rootStore
this.props
しかし、上記の二重の脱構築(脱構築だと思います)はどういう意味でしょうか?
ベストアンサー1
これはネストされた構造化分解と呼ばれ、多くの状況で非常に役立ちます。
少しずつ理解していきましょう。
次の例を見てください:
const person = {
friend: {
name: 'john',
age: 20,
},
};
const { friend } = person;
console.log(friend);
ここでは、構造化解除を使用してプロパティの値を取得しますfriend
。値自体がオブジェクトであるため、構造化解除も使用できます。
前の例から:
const person = {
friend: {
name: 'john',
age: 20,
},
};
const { friend } = person;
console.log(friend);
const {age} = friend ;
console.log(age) ;
今度はage
、デストラクチャリングを使用してプロパティも取得します。これは非常に便利で美しいですが、プロパティだけが必要な場合age
と、プロパティが不要な場合はどうでしょうかfriend
。上記の例をすべて 1 つのステップで実行できますか。はい。これが ES6 の素晴らしいところです。
const person = {
friend: {
name: 'john',
age: 20,
},
};
const { friend :{age} } = person;
console.log(age);
ご覧のとおり、 の値はage
1 ステップで取得されます。これは、ネストされたオブジェクトがある場合の多くの状況で役立ちます。上記のコードでは、 の値をログに記録しようとすると、friend
が取得されますReferenceError: friend is not defined
。
ご存知ですか? ネストされた構造化分解は好きなだけ深くすることができます。楽しみのために用意したこの複雑な例を見てください。
const person = {
friend: {
name: 'john',
other: {
friend: {
name: {
fullName: {
firstName: 'demo',
},
},
},
},
},
};
const {
friend: {
other: {
friend: {
name: {
fullName: { firstName },
},
},
},
},
} = person;
console.log(firstName); // demo
かわいい!!
デストラクチャリングについて詳しく知りたい場合は、次のリソースを参照してください。