react-nativeコードの一部:
enderScene(route, navigator) {
let Component = route.component;
return (
<Component {...route.params} navigator={navigator}></Component>
);
}
このコードはコンポーネントオブジェクトを返します、
しかし、私はこのコードを理解していません---> {... route.params}
'...'はSpread構文と呼ばれます。
スプレッド構文を使用すると、複数の引数(関数呼び出しの場合)または複数の要素(配列リテラルの場合)または複数の変数(代入の破棄の場合)が予想される場所で式を展開できます。
例:
var car = ["door", "motor", "wheels"];
var truck = [...car, "something", "biggerthancar"];
// truck = ["door", "motor", "wheels", "something", "biggerthancar"]
スプレッド演算子についてもっと知りたい場合:
https://rainsoft.io/how-three-dots-changed-javascript/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator
上記を拡張するために、元の投稿のコンテキストでは、スプレッド演算子は基本的にroute.paramsのすべてのパラメーターを通過します。
たとえば、route.paramsがオブジェクトだった場合
{key: 'my-route', title: 'My Route Title'}
次に
<Component {...route.params} navigator={navigator} />
次のように書き直すことができます
<Component key={route.params.key} title={route.params.title} navigator={navigator} />
これのもう1つの「側面」は、破壊的な割り当てです(ステートレス反応コンポーネントを使用した例)
const Component = (props) => {
// this is simply referencing the property by the object key
let myKey = props.key
// this is using destructuring and results in the variables key, title and navigator which are from props.key, props.title and props.navigator
let { key, title, navigator } = props
return <Text>{title}</Text>
}
同じことを達成するように、関数宣言でこれを行うこともできます
const Component = ({key, title, navigator}) => {
// now you have variables key, title and navigator
return <Text>{title}</Text>
}
Destructuring を参照してください
上記の答えに加えて、...
またはspread演算子はネイティブに反応する特別なものではありません。これはes6の機能です。 ES6はecmascriptの略で、javascriptの標準です。これは、react/react-nativeの外部で.js
ファイルを作成し、それをノードenvで実行しても、spread演算子が引き続き機能することを意味します。