所以 props 对象是组件从 React 接收的内容,具体取决于您如何配置应用程序。如果你有 Redux,那么你会从那里收到一些道具。如果组件是子组件,并且您从父组件传递一些属性,那么您也将从父组件接收道具。如果父母正在传递导航,那么您将在您的孩子中将其作为道具。
props 只是一个组件从多个来源接收的对象。它实际上可以被称为任何东西,banana 或 sporp,只是一个约定叫该对象props。
Destructuring 另一方面用于将对象的属性(或数组中的值)“解包”到单独的变量中。因此,当您解压缩导航属性时,您实际上是从
const MatchToggleComponent = (props) => {
// props object contains navigation and route properties, which can be accessed as props.navigation and props.route
进入
const MatchToggleComponent = ({ navigation, route }) => {
// you unpack navigation and route properties into separate variables `navigation` and `route`, ready to be used in your component.
想象一下 MatchToggleComponent 的父级看起来像
return (
<>
<MatchToggleComponent
foo={bar}
one={two}
/>
</>
)
所以您的props 对象将具有foo 属性、one 属性,然后是navigation 属性和route 属性。有效地解构让您可以选择您感兴趣的属性并“解包”它们,准备好在您的组件中使用,而无需一直引用 props 对象。
所以如果你想使用foo 道具和导航道具,你会这样做
const MatchToggleComponent = ({ foo, navigation, route }) => {
您可以在任何组件中执行此操作,只需尝试一下即可。
如果您有任何其他问题,请不要犹豫,继续讨论 :)
编辑 1:
req.query 似乎是一个具有userId 和activeMethods 属性的对象。当你解构对象时,你应该使用花括号。因此,当你解构数组时,你应该使用方括号[]。
您解构的变量名称应与对象中的名称相同。例如:
const foo = {
some: ...,
other: ...,
last: ...,
};
如果你这样做const { bar } = foo,那么 JS 就不会知道你想要获取对象的第一个 prop,这会抛出一个错误。所以你创建的变量应该与对象中的道具名称相匹配,比如
const { last, other } = foo;
如您所见,顺序并不重要(数组的情况有点不同,但我不会在这里介绍)。
您可以做的是,您可以重命名变量 WHILE 解构对象的属性。想象一下,您想从 foo 对象中获取 last 属性,但出于某种原因您希望将其命名为 first。然后你会做
const { last: first } = foo;
这将为您有效地从 foo 对象中解压缩 last 属性并将其重命名为 first,因此您将能够在您的代码中使用 const first。