带有渲染器的路由器不在另一个组件中传递道具

Router with render not passing props in another component

我有 2 个 class 组件 PhoneDirectory.jsApp.js

class PhoneDirectory extends Component {
  render() {
    return (
      <BrowserRouter>
        <Routes>
          <Route exact path="/" element={<App />} render={(props) => <App {...props} name="test" />} />
        </Routes>
      </BrowserRouter>
    )
  };
}

export default PhoneDirectory;

另一个Class组件

class App extends Component { 
  render() {
    console.log("value:", this.props.name);
    return (
    );
  }
}

export default App;

这里 App.js 我在控制台日志中未定义。

react-router-dom@6 中不再有 componentrenderchildren 功能道具,它们被一个 element 道具取代 ReactNode、a.k.a。 JSX。您可以传递额外的道具。

示例:

<Route path="/" element={<App name="test" />} />

...

class App extends Component{
  componentDidMount() {
    console.log("value:", this.props.name);
  }

  render() {
    return ....;
  }
}

export default App;