当前位置: 首页 > 知识库问答 >
问题:

React在我的应用程序中呈现不必要的组件

东郭淇
2023-03-14

新的反应和反应路由器,使我有许多网页的工作。我在我的家里。jsx它看起来是这样的

    import React, { Component } from 'react';
    import randomimage from '../imagefolder/rentalbackground.jpg';
    import Header from './Header';
    import Footer from './Footer';
    import Rentals from './Rentals';
    import {
      BrowserRouter as Router,
      Route,
      Redirect,
      Link
   } from 'react-router-dom';

    class Home extends Component {
      render() {
        return (
        <div>
            <Header />
            <Router>
                <div>
                    <Link to="/rentals">Rentals</Link>
                    <main>
                        <Route path="/" component={Rentals} />
                    </main>
                </div>
            </Router>
            <p>some paragraph here</p>
            <img src={randomimage} alt="imagerand" />
            <Footer />
        </div>
    );
   }
  }
export default Home;

我的租赁组件看起来像这样。

    import React, { Component } from 'react';
    class Rentals extends Component {
     render() {
      return (
        <div>
            <p>this is for all the rentals</p>
        </div>
             )
            }
           }
   export default Rentals;

我要做的是创建一个名为localhost:3000/rentals的页面,它只在新页面中显示“rentals”组件中的段落。但是当我点击房屋上的租赁链接时。在jsx中,它显示“主”组件中的所有组件,包括图片、页眉和页脚组件
我尝试在路线上使用精确路径,但什么也没发生。我怎样才能做到这一点?

共有1个答案

司空兴为
2023-03-14

这是因为您已将路由器组件置于Home组件中,而Home组件又具有Header和页脚。因此,所有子组件都将在您的Home组件中呈现。

你的路由器组件应该在你的应用程序的顶层,所有其他组件,如家庭,租赁等,应该作为一个孩子添加到路由器。

只是给大家举个例子,应该是这样的东西。

//Your app initialisation, Top Level
 ReactDOM.render(
    <div style={{height: '100%'}}>

      //All Your routes can be exported at one place and passed to your router as props. This will also help you maintain routes at one place
      <Router history={browserHistory} children={routes}/>

    </div>,
    document.getElementById('root')
  )

将建议您阅读更多关于使用React路由器和最佳实践的信息,因为这是一个架构问题,需要在这里回答相当广泛的主题。

 类似资料:
  • 问题内容: 我是新来的世界,我有这样的话: 然后单击,您将被打印在控制台上。现在将行更改为: 现在点击该按钮,我希望它会被渲染。但事实并非如此。 我不确定为什么会这样。请注意,我在方法中有上面的代码。 问题答案: 您可能希望有一个状态组件,该状态组件在单击按钮之后在按钮旁边显示另一个组件。您需要做的就是跟踪按钮是否被单击:

  • 我在React应用程序上使用状态实现时遇到了困难。当nextProps没有从this.props更改时,我想防止组件再次加载,它工作得很好,但它搞乱了值,我找不到原因。

  • 希望你能帮我解决这个问题,因为它已经困扰我几天了。 我对页面的标记:[表] 我的自定义DataTable扩展Java代码(扩展以确保添加了所有outputMarkUp):@override protected void onInitialize(){super.onInitialize();this.addtopToolbar(新的NavigationToolbar(this));this.add

  • 第二次渲染成功,但副作用是my child组件使用其父级的上下文值作为初始状态(使用useState挂钩)将其初始状态设置为空数组。我正在使用React挂钩(useState、useContext、useReducer、useffect) 应用程序。js: 我的子组件Main Page.jsx 结果:结果图像 如您所见,尽管uniqueList已经填充了数组,但uniqueType状态仍然为空。我

  • 当我们点击“添加”链接时,我试图呈现需要组件。下面是主要组件的代码: 下面是以防万一的需求组件: 我在第一次单击add链接时实现了我试图实现的目标,即在第一次单击add链接时,need组件没有任何条件地被呈现,当我单击“add”时,need组件再次被呈现,但当我第二次单击“add”链接时,我没有看到任何变化。为什么会这样,我希望在每次单击“Add”链接时呈现Need组件。

  • 该父级接收“props.id”并将数据值传递给由getAttributes()返回的子级。 在child上,我可以在控制台和componentWillReceiveProps中看到props值,但数组没有呈现。我尝试使用react-devtool。在react-devtool中,道具似乎传递给了孩子,但不是渲染。有趣的是,在react-devtool中,当我改变数组的一些元素时,数组正在呈现。 我