javascript - 如何将变量传递给子组件以便它们与 React Router 一起使用?

标签 javascript reactjs ecmascript-6 react-router

我在设置允许跨组件使用 React Router 的基本 React 应用程序时遇到问题。当我在 App.js 中有以下代码片段时,一切似乎都工作正常,但是,我在将信息传递给子组件时遇到了麻烦。

我尝试将 JSX 对象传递到组件中,如下所示:

<Main component={Home} />

但是当尝试访问主子组件中的属性时,这似乎不起作用。

App.js

import React from 'react';
import './App.css';
import { NavLink, Switch, Route } from 'react-router-dom';
import Navigation from './components/navigation.js';
import Main from './components/main.js';

const App = () => (
  <div className='app'>
    <h1>Portfolio Website</h1>
    <Navigation />
    <Main home={Home} about={About} />
   </div>
);


const Home = () => (
  <div className='home'>
    <h1>Welcome to my portfolio website</h1>
    <p> Feel free to browse around and learn more about me.</p>
  </div>
);

const About = () => (
  <div className='about'>
    <h1>About Me</h1>
  </div>
);


export default App;

Main.js

import React, { Component } from 'react';
import { NavLink, Switch, Route } from 'react-router-dom';

const Main = () => (
    <Switch>
        <Route exact path='/' component={this.props.Home}></Route>
        <Route exact path='/about' component={this.props.About}></Route>
    </Switch>
);

export default Main;

导航.js

import React from 'react';
import { NavLink } from 'react-router-dom';

const Navigation = () => (
  <nav>
    <ul>
      <li><NavLink exact activeClassName="current" to='/'>Home</NavLink></li>
      <li><NavLink exact activeClassName="current" to='/about'>About</NavLink></li>
    </ul>
  </nav>
);

export default Navigation;

我希望能够使用创建的导航来加载组件内容,就像不在单独的组件中时一样。不知道我哪里出错了?谢谢

最佳答案

我根本不会做这样的事。我认为你的主要组件是多余的。

这将导致将您的每一个组件都放入该组件中。

路由器本身就是一个组件,所以为什么不像下面这样:

import { BrowserRouter, Switch, Route } from "react-router-dom";
import Navigation from "./yournavigationcomponent"
import Home from "./home"
import About from "./about"

class App extends Component {
  render() {
    return (
        <BrowserRouter>
            <div>
                <Navigation />
                <Switch>
                  <Route exact path='/' component={Home}/>
                  <Route path='/about' component={About}/>
                </Switch>
            </div>
        </BrowserRouter>

    )
  }
}

关于javascript - 如何将变量传递给子组件以便它们与 React Router 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53970523/

相关文章:

javascript - 在组件内向左滚动的方式是什么?

javascript - 如果第一个 js 出现不止一次,则按字母顺序对 2 个属性进行排序

javascript - 使用 ES6 语法定义类方法属性

javascript - javascript的验证格式

javascript - 是否可以仅从本地网络显示 WebRTC 对等点?

javascript - 添加参数时调用 javascript 函数停止工作,这真的不是大声吗?

reactjs - useImperativeHandle 子组件的使用但无法从父组件获取函数

reactjs - 动画高度属性 tailwindcss

javascript - 为什么在 Node JS 中使用 'require' 导入时特殊字符会被替换?

javascript - 从选择多个中获取值