reactjs - react -路由器-dom v6 : What would be the eq

在我的 App.js 文件中,我以前能够使用以下方法呈现动态路由:

<Route exact path="/episodes/:id" render={(props) => {
    const episodeNumber = props.location.pathname.replace('/episodes/', '');
    return (
        <EpisodeDetails episode={this.state.episodes[episodeNumber]} />
    );
}}/>

EpisodeDetails.js

const EpisodeDetails = (props) => {
    return (
        <div className="Episode">
            <h2><span>Episode {props.episode.id}: </span>{props.episode.title}</h2>
            <p>{props.episode.description}</p>
            <audio controls>
                <source src={props.episode.source} type="audio/mp3" />
            </audio>
        </div>
    );
};

export default EpisodeDetails;

但是从 V6 开始,这种方法不再有效。 URL 路径名已正确更新(即 /episodes/2),但组件未针对该路径呈现。

V6 与我要实现的目标有什么等价物?文档并没有说得很清楚。

最佳答案

奇怪的是,您在 v5 代码中为剧集编号声明了一个路由匹配参数,但后来没有使用它。在 react-router-dom v6 中,您可以创建一个包装器组件来“提取”id 匹配参数并传递指定的剧集编号。

const EpisodeWrapper = ({ episodes }) => {
  const { id } = useParams();
  <EpisodeDetails episode={episodes[id]} />
}

...

<Route
  path="/episodes/:id"
  element={<EpisodeWrapper episodes={this.state.episodes} />}
/>

关于reactjs - react -路由器-dom v6 : What would be the equivalent to Route's render prop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70827930/

相关文章:

python - 有没有办法用mypy覆盖python中继承的类属性类型?

rust - 您可以在正在构建的结构中引用先前初始化的字段吗?

python - 计算 pandas 数据帧行对中的匹配数

typescript - 如何在 Typescript 中使用 Chai expect() 验证特定

r - 假阳性与假阴性权衡图

c++ - 我可以用 g++ 编译,但得到一个有等效 cmake 的错误程序(GTK 错误)

python-3.x - 跳过大型 XML 文件中的元素(python 3)

material-ui - MUI X Pro 许可证 key 应该安装在哪里?

fortran - 在 Fortran 中将原始二进制文件读入数组的 EOF 处理

asp.net-mvc-4 - MVC 4 项目上的 Visual Studio 2022 "Ari