开发者问题收集

无法从路由变量路径中找到匹配项(未定义的属性(读取‘params’))

2022-01-20
245

我对 JavaScript 和 React 还很陌生,只是跟着一些 YouTube 教程学了学。 我无法从网址 "/room/:roomCode" 获取 "roomCode"

Homepage.js

<Route path={"/room/:roomCode"} element={<Room />} />

Room.js

import React, {Component} from "react";

export default class Room extends Component {
    constructor(props) {
        super(props);
        this.roomCode = this.props.match.params.roomCode;
    }
    render() {
        return (
            <div>
                <h1>{this.roomCode}</h1>
            </div>
        );
    }
}

我无法打印 roomCode,需要一步一步的说明来说明我需要在哪里更改代码。

1个回答

React router v6 已放弃对基于类的组件的支持。请参阅此 github 线程 https://github.com/remix-run/react-router/issues/8146

Room 组件转换为函数组件,然后使用 useParams 反应钩子。

我已将您的基于类的组件转换为函数组件。

import { useParams } from "react-router-dom";

const Room = () => {
  const { id } = useParams();
    
  return (
     <div>
        <h1>{id}</h1>
     </div>
  );
    
}

export default Room

编辑:

我注意到您的 route 路径周围有花括号,请将其删除,这样它看起来应该像这样,

<Route path="/room/:roomCode" element={<Room />} />
Sangeet Agarwal
2022-01-20