Javascript 为什么在反应路线中通过{…道具}?

Javascript 为什么在反应路线中通过{…道具}?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我之所以使用下面的路线,是因为这是我在网上找到的代码: <Route exact path="/test" render={(props) => <Test {...props} msg={ "abc" } /> } /> }/> 我知道{…props}表示多个参数,但我不明白为什么我需要它,因为下面的代码也可以正常工作,并且props.msg在测试中可用 <Route exact path="/test" render={() => <Tes

我之所以使用下面的路线,是因为这是我在网上找到的代码:

<Route exact path="/test" render={(props) => <Test {...props} msg={ "abc" } /> } />
}/>
我知道{…props}表示多个参数,但我不明白为什么我需要它,因为下面的代码也可以正常工作,并且props.msg在测试中可用

<Route exact path="/test" render={() => <Test msg={ "abc" } /> } />
}/>
那么{…props}在渲染过程中传入时实际上做了什么呢?

来自:

渲染道具功能可以访问与组件渲染道具相同的所有管线道具(匹配、位置和历史)


如果
Test
没有使用这些代码中的任何一个,那么您就不必通过它们。

对于您的用例,您的第二个代码片段就足够了,可以正常工作

将道具展开到子组件中,如

<Route exact path="/test" render={(props) => <Test {...props} msg={ "abc" } /> } />
}/>

如果您想将属性传递给子组件,而该子组件不是您自己处理的,而是从另一个源(如路由组件本身)接收的(尤其是路由道具“匹配”、“位置”和“历史”)。请记住,您的路由中可以有参数,例如: /用户/:用户名 这些道具将允许您访问它在您的情况下,您可能不需要它,但最好始终包含它们,以便保持一致。

关于提供的3个道具的更多文档:

  • 匹配
  • 位置
  • 历史

第一个代码段将任何其他匹配属性向下传递到
测试。第二个没有。
Test
是否有任何其他属性?所有
Route
连接的道具,如历史记录、匹配等。请通过
console亲自查看。日志(道具)
Test
中。…
是一个Javascript功能。它在需要多个参数或元素的地方展开参数。当在对象文字中使用时,它会将参数的属性添加到新的对象中,以防您也需要其他道具。@PanagiotisKanavos-OP表示他们知道spread运算符在问题中的作用。他们想知道为什么
。。。道具
正在传播到
中,而
无法知道,因为我们不知道
做什么。