React Router id 作为参数

2024-01-30

在我的 app.js 组件中,我有一个名为“recipes”的数组,它具有我喜欢在路由器中呈现这些元素的元素(认为是 id)。 App 组件应通过配方组件呈现它。

我这里有一些代码,但它不能正常工作。我尝试了一整夜,但找不到错误。我是新来反应的,所以也许你能看到我看不到的错误。

App.js

    import React, { Component } from "react";
import "./App.css";
import Recipes from "./components/Recipes";
import { Router } from "@reach/router";
import Recipe from "./components/Recipe ";
import Nav from "./components/Nav";
import About from "./components/About";

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      recipes: [
        {
          id: 1,
          title: "Drink",
          image: "https://picsum.photos/id/395/200/200"
        },
        { id: 2, title: "Pasta", image: "https://picsum.photos/id/163/200/200" }
      ]
    };
  }

  getRecipe(id) {
    //Number(id)

    return this.state.recipes.find(e => e.id === Number(id));
  }

  render() {
    return (
      <React.Fragment>
        Recipes
        {/*Sending the props from this component to the recipes component so it can be rendered there. And shown here
               <Recipes recipes={this.state.recipes}></Recipes>
          */}
        <Nav></Nav>
        <Router>
          <About path="/about"></About>
          <Recipe
            path="/recipe/:id"
            loadRecipe={id => this.getRecipe(id)}
          ></Recipe>
        </Router>
      </React.Fragment>
    );
  }
}

export default App;

食谱.js

import React, { Component } from "react";

class Recipe extends Component {
  constructor(props) {
    super(props);

    this.state = {
      // See App.js for more details. loadRecipe is defined there.
      recipe: this.props.loadRecipe(this.props.id)
    };
  }

  render() {
    // In case the Recipe does not exists, let's make it default.
    let title = "Recipe not found";

    // If the recipe *does* exists, make a copy of title to the variable.
    if (this.state.recipe) {
      title = this.state.recipe.title;
    }

    return (
      <React.Fragment>
        <h1>The recipe:</h1>
        <p>{title}</p>
        {/* TODO: Print the rest of the recipe data here */}
      </React.Fragment>
    );
  }
}

export default Recipe;

我有这两个组件,我不知道出了什么问题,我没有收到任何错误。


我们需要在某处添加一个 Route 组件以获得您期望的功能。您需要做两件事之一。要么使配方组件成为 Route 组件,要么保持原样并将其包装在 Route 组件中并使用 render prop。

const Recipe = (props) => {
  <Route {...props}>
     // This is where your actual recipe component will live
  </Route>
}

然后你将能够

<Recipe
  path="/recipe/:id"
  loadRecipe={this.getRecipe}>
</Recipe>

对于 loadRecipe 部分,您可能只想向下传递该函数,然后在 Recipe 组件中使用它。您应该从 Route 组件获取 id。

or

  <Route path="/recipe/:id" render={()=> <Recipe passDownSomething={this.state} />} />

进行此更改后,您就可以使用值得信赖的console.log弄清楚你得到了什么道具并做出必要的调整。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Router id 作为参数 的相关文章

  • Typescript 中的forwardRef 和defaultProps

    我正在尝试在forwardRef 中使用defaultProps 当我使用没有forwardRef的MessageBox时 它与defaultProps配合得很好 但是 当我使用forwardRef 时 会发生错误 怎么解决呢 打字稿 3
  • 无法从静态文件夹加载图像

    如何在 Next js 的组件中加载图像 我必须先构建项目吗 如果是 有没有办法在不先构建的情况下加载图像 无论我如何尝试 我都无法让它发挥作用 来自文档 https nextjs org docs basic features stati
  • 如何在redux中设置初始状态

    我试图弄清楚如何在 redux 中设置商店的初始状态 我在用着https github com reactjs redux blob master examples todos with undo reducers index js htt
  • 在ReactJS中,如果我们不为useEffect提供依赖数组,是否会导致该函数每次都被调用?

    我看到在ReactJS 文档 https reactjs org docs hooks overview html的依赖数组useEffect fn 是可选的 不提供它应该与提供空数组相同 但是 如果我的代码如下 https codesan
  • Django FileResponse PDF - 前端的 pdf 字体更改 - (Django DRF 和 React.js)

    我在我的应用程序中使用 Django Rest Framework 和 React js 作为应用程序的一部分 我在后端生成 pdf 然后将它们发送到前端进行显示 这个功能是有效的 如果不是因为我的前端 pdf 中的字体看起来不同的话 在我
  • Next.js 使用 SSR 的本地存储问题

    我有以下自定义挂钩 它将数据存储在本地存储中 import useCallback useEffect useState from react export const useLocalStorage key initialValue gt
  • 实时搜索错误

    我正在获取用户偏好和角色 一切正常并且数据接收正确 默认值放置在单选按钮上以突出显示用户当前拥有的选项 我正在使用 Antd Design Table 组件 问题 当我将用户首选项更改为打印文档时 它确实通过数据库的状态成功更改了它 但是现
  • 在本地主机中保存更改后,React 组件不会在浏览器中重新加载

    我使用 Create React App 创建了一个新的 React 项目 在旧项目中 每当我在组件中进行更改并保存组件时 它都会反映在浏览器中 但在新项目中 当我保存代码中的更改时 浏览器不会重新加载 也不会反映更改 所以我停止了正在运行
  • useState 由于某种原因没有更新?

    当我尝试使用 axios 从后端 API 获取一些数据 并在由于某种原因获得结果后设置状态时 状态不会更新 当我尝试使用状态时 它只会向我显示一个空数组 但有趣的是当我console log res data 它会毫无问题地向我显示我的列表
  • 通过内联样式动态设置背景 Div 图像时不显示 | Next.Js

    我试图通过使用地图和外部 js 文件将图像存储为对象来从组件渲染图像 然后通过它们设置循环 将其设置为创建的每个 div 的不同背景图像 如果有意义的话 我将提供代码来更清楚地说明我想要完成的任务 在地图过程中 我试图定位对象方法 但我相信
  • 如何在不退出的情况下更新会话值?

    With NextAuth js https github com nextauthjs next auth 如何在不注销并再次登录的情况下更新会话对象内的值 例如 一旦用户登录 我就会使用会话中存储的 URL 来显示用户的头像 我还提供用
  • 在react ComponentDidMount中访问this.props

    我是个新手 无法做出反应 并且陷入了某个项目 问题是我有一个api url in this props从父组件接收 在这个子组件中我想使用api url使用 JSON 获取一些数据 在父组件中我有 Repositories api url
  • 如何将 React Native 按钮放置在屏幕底部以在多个 ios 设备上工作

    我还年轻 在网上搜索可以帮助我解决这个问题的教程 但没有找到任何东西 我知道如何将屏幕上的按钮从 A 点移动到 B 点 问题是我似乎无法将其固定在底部以在我的 ios 模拟器的不同外形尺寸上工作 到目前为止 我已经尝试过 marginTop
  • 在react中自定义useAxios钩子

    我正在使用 axios 和 React 所以我想为此编写一个自定义钩子 我这样做了 它工作正常 如下所示 const useAxios gt const response setResponse useState const error s
  • React Native:如何在组件中添加脚本标签

    我正在尝试在 React Native 应用程序的组件内添加标签 下面是我的代码 它似乎不起作用 谁能告诉我如何解决这个问题 import React Component from react import PropTypes from p
  • 为什么现代 JavaScript 框架不鼓励与 DOM 直接交互

    在处理 AngularJS Angular 和 React 等 JS 框架时 我发现不鼓励直接与 DOM 交互 如果忽略警告 通常会导致错误 当我说 与 DOM 交互 时 我的意思是使用document getElementById myE
  • Webpack 加载器与插件;有什么不同?

    webpack 中的加载器和插件有什么区别 The 插件文档 https webpack github io docs using plugins html只是说 使用插件添加通常与 webpack 中的捆绑包相关的功能 我知道 babel
  • 将值数组附加到 React JS 中某个状态的当前数组

    我的状态值为 this state emp id 1 name A id 2 name B id 3 name B 我怎样才能添加一个像这样的数组var arr id 4 name D 给国家emp而不删除数组的当前值 我只想将新的值数组附
  • 如何在类组件中使用react-redux useSelector?

    我是 React 新手 正在尝试学习 Redux 我想访问类中的存储 但它给了我一个错误 我不能在类中使用钩子 当我在函数中使用此代码时 正如我在 YouTube 教程中看到的那样 它可以正常工作 我在这里进入商店的柜台 function
  • React Native + Jest EMFILE:打开文件太多错误

    我正在尝试运行 Jest 测试 但收到以下错误 读取文件时出错 Users mike dev react TestTest node modules react native node modules yeoman environment

随机推荐

  • 是什么让 SPI 比 I2C 协议更快 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我了解 I2C 和 SPI 通信的基础知识 因为两者都是同步协议 我想知道是什么让 SPI 比 I2C 更快 如果我没记错的话 使用 I2
  • Docker:理解ENTRYPOINT和CMD指令

    我想问一些关于ENTRYPOINT and CMD可在 Dockerfile 中使用的说明 Providing that I m mounting local directories as volumes in a container us
  • 如何检查我当前是否在主屏幕上

    是否可以检查我的应用程序当前是否处于后台并且主屏幕是否已启动 没有 API 可以知道主屏幕是否正在显示 但是 您可以使用各种 Activity 生命周期回调 onStop 等 知道您的应用程序何时发送到后台
  • 为什么未装箱的数组不是可折叠的实例?

    在 Haskell 中找出要使用的正确数据容器可能有点棘手 对于我认为使用的 2D 网格应用程序UArray会是合适的 然而 据我所知UArray不是一个实例foldable 不在Data Array IArray nor Data Arr
  • Flutter SQFlite 一对多关系设置

    我正在创建一个应用程序并需要一个数据库 该数据库包含位置表和兴趣点表 这是一对多的关系 一个位置有多个兴趣点 现在我尝试用 sqflite 在 flutter 中建立这种关系 但失败了 我已经尝试添加外键 但没有成功 这只是代码中最重要的部
  • RecyclerView ViewHolder 内部 ConstraintLayout 的性能

    在过去的两天里 我一直在尝试分类为什么我的 RecyclerView 在滚动时速度如此之慢 并且我已将其范围缩小到我用于行的 ConstraintLayout 在 Android 上使用 GPU 分析器会显示绿色 蓝绿色条一直到屏幕顶部 表
  • 使用 XmlSlurper 解析(非常)大的 XML 文件

    我对 Groovy 有点陌生 我正在尝试使用 XmlSlurper 读取一个 相当 大的 XML 文件 超过 1Gb 由于它不构建整个 DOM 因此它应该能够在处理大文件时产生奇迹 在记忆中 尽管如此 我还是不断收到 OutOfMemory
  • 在 PL/pgSQL 函数中拆分逗号分隔的字符串

    我正在尝试编写一个函数 该函数将 ID 作为输入并更新该给定 ID 上的一些字段 到目前为止 它看起来像这样 CREATE FUNCTION update status p id character varying p status cha
  • 如何在 Laravel 中解密哈希密码

    我用谷歌搜索了很多 但不幸的是没有找到有效的解决方案 我知道这是一种糟糕的技术 但我需要通过电子邮件向用户发送密码 我已设法发送用户哈希密码 但我无法解密该密码 以下是我正在使用的程序 results DB select select fr
  • 将 postgreSQL 存储过程作为一个事务执行

    我正在使用 PostgreSQL 9 3 并且创建了一些包含多个语句的存储过程 我在准备好的语句的帮助下在 Java 应用程序中调用此存储过程 现在我读到存储过程中的每个语句都作为一个事务执行 即每个语句后一次提交 但我想要的是将整个存储过
  • nginx WordPress URL 重写

    我刚刚安装了 nginx 1 0 8 和 php fpm 在过去 30 分钟里我试图重写 WordPress 的 URL WordPress URL 应如下所示 http localhost website blog 2011 10 sam
  • 在 OSX 上,Valgrind 报告此内存泄漏,它来自哪里?

    在 OSX 上 Valgrind 报告此内存泄漏 它来自哪里 该代码是用 g 作为 c 代码编译的 我这样做是为了函数重载 13088 18 bytes in 1 blocks are definitely lost in loss rec
  • 通过管道输入到脚本,然后从用户获取输入

    假设我想将输入通过管道传输到 Python 程序 然后在命令行上从用户那里获取输入 echo http example com image jpg python solve captcha py 和内容solve captcha py ar
  • 如何在纸张输入中添加所需的指示器

    给定纸张输入
  • Flash CS4 + SQLITE

    我正在寻找一些有关在 Flash CS4 中使用 SQLITE 和 AIR 的信息 我找不到任何好的示例 它们都是为 Flex 构建的 我不想使用它 谁能给我一些如何使用 Flash CS4 执行此操作的基本示例 或者指导我一些代码示例 教
  • “GAPI 未定义”消息

    我正在尝试使用 Google Sheets API 包含在我的网络应用程序中 但我不断收到一条错误 指出未定义igapi 库 我尝试使用 ComponentDidMount 生命周期方法延迟对服务器的请求 甚至在该方法中使用超时 但我不断收
  • 将多个 PHP 变量传递给 shell_exec()? [复制]

    这个问题在这里已经有答案了 我使用 shell exec 方法从 PHP 调用 test sh my url http www somesite com my refer http www somesite com page shell e
  • 使用 Visual Studio 2013 创建 Java 应用程序 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 是否有可能创建一个Java应用程序使用视觉工作室 2013 因为我不喜欢使用 NetBeans 或 Eclipse 而且我更喜欢使用 Vis
  • PowerShell Core 和 AppX 包管理

    我目前正在使用 PowerShell 6 2 预览版 在我的脚本中 我尝试使用 Windows 10 应用程序执行操作 能够使用类似的命令Get AppxPackage 我需要从以前的 PowerShell 导入 Windows 模块 如下
  • React Router id 作为参数

    在我的 app js 组件中 我有一个名为 recipes 的数组 它具有我喜欢在路由器中呈现这些元素的元素 认为是 id App 组件应通过配方组件呈现它 我这里有一些代码 但它不能正常工作 我尝试了一整夜 但找不到错误 我是新来反应的