当前位置: 首页 > 知识库问答 >
问题:

在反应中传播道具[复制]

於子晋
2023-03-14

我不明白为什么我们要用{…道具}

例如在我的代码中(当我学习路由器时)我做了这样的事情

import React from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom'
import Home from './home.js';

const route = () => {
    return(
        <BrowserRouter>
            <Switch>
                <Route path ="/"  render ={(props) => <Home {...props}/>} />
            </Switch>
        </BrowserRouter>
    )
}

export default route;

这里,这个传递函数/可能称之为给他道具

从React导入;

const home =  (props) =>  {
  console.log(props)
  return (
  <div> home </div>
  );
}

export default home;

这将记录类似这样的内容

{match: {…}, location: {…}, history: {…}, staticContext: undefined}

但是如果我把{…道具}从家里移除,它就不会记录这个

{match: {…}, location: {…}, history: {…}, staticContext: undefined}

任何人都可以分步/或详细地解释发生了什么,我们为什么需要它?

共有2个答案

陶炫明
2023-03-14

这基本上是工作中的扩展语法。它允许在需要参数或参数的地方展开iterable。

例如,你有一个判决,

params = { a: 1, b: 2, c: 3}

您需要a、b和c作为组件模块的支柱。

通过他们的一个方法是这样的,

<Module a=params['a'] b=params['b'] c=params['c'] />

但是利用ES6的扩展语法,它只是,

<Module {...params} /}

更容易对吧?道具只是鸡巴。您的代码暗示您希望Home组件继承您在上面登录的其父组件路由的所有道具。你可以手动添加所有想要的道具,但是谁有时间呢?

在这里阅读有关扩展语法的更多信息。

笪煌
2023-03-14

渲染道具的函数被调用,路由道具列在留档中。通过在您的Home组件上传播它们,您只是传递这些道具,以便它们也可以在您的Home组件道具中使用。

如果您只将路径道具传递给“代码> >代码>路由> <代码>的函数<代码>渲染>代码>,请考虑使用<代码>组件< /代码>支持:

<Route path="/" component={Home} />

 类似资料:
  • 我在找到一种将道具传递给组件子组件的方法时遇到了一点麻烦。我想做的是有一个组件(ParentComponent)它有一个函数(toggleSuccess())来改变它自己的状态(例如一个名为成功的布尔值),并将该函数作为onClick道具传递给它的所有子函数。理想情况下,我可以将各种组件放入ParentComponent,它们都可以通过onClick道具访问toggleSuccess()。有没有一

  • 悬而未决...

  • 我在克服react路由器的问题时遇到困难。该场景是,我需要从状态父组件和路由向子路由传递一组道具 我想做的是传递its,传递its。然而,我能找到的唯一方法是通过这两个和,这意味着每个子路径都会获得每个子道具,无论其是否相关。目前这不是一个阻塞问题,但我可以看到,有一段时间我会使用同一组件的两个,这意味着propA上的键将被propB上的键覆盖。 这实际上是我所期望的方式。当我链接到我得到组件渲染

  • 在本页React Native State on React Native docs中,我们有以下语句: 道具由父级设置,并且在组件的整个生存期内都是固定的。 但是,在本页React文档上的React State and Lifecycle中,我们有以下声明: 因为this.props和this.state可能是异步更新的,所以不应该依赖它们的值来计算下一个状态。 我的误解在哪里?对我来说,当组件

  • 我对在反应中传递道具有问题。这是我的文件夹结构: src > Button.js 容器 PageContainer.js 页 Page.js 我正在使用Bootstrap 4在Button.js中创建一个按钮: “类”按钮中没有其他内容。现在我在类PageContainer中添加了一个按钮: 如你所见,我给按钮传递了一个标题:后退和下一步。那工作正常。我现在可以添加一个网址,它会工作正常,但这不是

  • 有什么办法可以做到这一点吗? 需要能够更改组件调用的组件