【问题标题】:Display component on multiple routes [duplicate]在多条路线上显示组件[重复]
【发布时间】:2020-04-15 14:38:04
【问题描述】:

我有 3 个主要模块:CartHolder、Project 和 About。

期望的行为:

  • "/": 购物车持有人
  • “/project”: CartHolder & Project
  • “/about”:关于

从“/”切换到“/project”,我不希望 CartHolder 重新渲染。

如何使用Route 实现这种行为?

function App() {
    return (
        <BrowserRouter>
            <div className="App">
                <Header/>
                <Route path="/project/:name" component={Project}/>
                <Route path="/about" component={About}/>
                <CartHolder/>
            </div>
        </BrowserRouter>
    );
}

【问题讨论】:

标签: javascript reactjs react-router


【解决方案1】:

在您的 CartHolder 组件中尝试类似的操作

import React, { Component } from "react";
import equal from "fast-deep-equal";

const propsWithoutLocation = props => {
  const { location, ...rest } = props;
  return rest;
};

export default CartHolder => {
    shouldComponentUpdate(nextProps) {
      if (equal(propsWithoutLocation(nextProps), propsWithoutLocation(this.props))) {
        return false;
      }
      return true;
    }

基本上,只要检查任何不是路由的道具是否改变,如果没有,就不要更新

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多