javascript - 如何在不更改 'state' 的情况下渲染点击加组件?

标签 javascript reactjs

我对 React 不太有经验,我有一个问题。我想要一个具有导航栏的组件,并根据单击的内容呈现该组件 - 但导航栏所在的位置(因此另一个组件显示在导航栏下方)。我的代码就是这样做的,但我不明白为什么。有人可以解释为什么在我的代码中,当我单击“第一个”时,搜索组件仍然显示,并且在它下面呈现我的第一个组件?为什么不只渲染第一页?非常感谢!!

class App extends React.Component {
                render () {
                    return(
                        <div>
                            <Switch>                     
                                <Route path='/first' component={BudgetSearch}/>
                                <Route path='/second' component={CheapestFareForDestination}/>
                            </Switch>
                    <Search />
                        </div>
                   )
                }
         }

export default App;

搜索.jsx

class Search extends React.Component {
            render () {

                return (
                    <div>

                        <ul>
                            <li><Link to='/first'>first</Link></li>
                            <li><Link to='/second'>second</Link></li>                          
                        </ul>
                    </div>
                )
            }
        }

export default Search;

最佳答案

看来您的<Search />组件没有被任何 <Route /> 包裹成分。本质上,你告诉 React 它应该渲染 <Search />无论路由器匹配什么路由。那么你的路线是否匹配/first , /second或任何其他路线,React 仍将渲染 <Search />因为它“匹配”所有路线。

关于javascript - 如何在不更改 'state' 的情况下渲染点击加组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46594550/

相关文章:

javascript - 在 React 中切换 css 类

javascript - jquery 脚本中的toggle() 作用域

javascript - HTML5 视频无法流式传输并且需要 90 秒才能加载

javascript - 无法让 socket.emit 处理表单值

javascript - React this.state 误解

reactjs - 如何在 React + TypeScript 中设置 Prop 类型

reactjs - React componentDidMount() 在未安装的组件上被触发

reactjs - 移动到 Cloudfront + SSL 后,应用程序中的 React 路由器链接损坏

javascript - 如何让滚动条停留在底部?

javascript - 登录表单的输入验证是否过大?开销 + "too much javascript"问题