当前位置: 首页 > 面试题库 >

react-router v4中的onEnter prop

邴俊达
2023-03-14
问题内容

我正在使用react-router v4。我感到困惑的是,当我单击<Link>组件时,路线会立即更改。我想在获取数据之前停留在当前路线,而不是先切换路线再获取数据。我发现其中react- router v3有一个onEnter钩子,但现在在中react-router v4,它已被弃用。那么,如何在单击<Link>组件之后以及更改路线之前立即获取数据?

例:

它是:在A->单击<Link> to B->获取数据以进行B->渲染B

不:在A->单击<Link> to B->渲染Route B->获取数据B->重新渲染B


问题答案:

在中react-router v4,您可以使用renderprop Route来替换其中onEnter现有的功能react-router v3

假设您有一条类似的路线 react-router v3

<Route path="/" component={Home} onEnter={getData} />

这的等效react-router v4

<Route exact path="/" render= {() => {getData(); return <Home data={this.state.data}/>}} />

但是,建议的方法是利用中的lifecycle方法component

Github讨论中

We have no lifecycle hooks that receive props on initial render.

我们不再有“路线生命周期”。相反,由于<Match>
组件是真实组件(不是像s这样的伪组件),因此它们可以参与React的生命周期,这意味着它们可以使用componentWillMount

因此,建议的解决方案之一是:

v4只是关于路由的组成部分。这意味着要利用生命周期方法。

componentWillMount() { // or componentDidMount
  fetch(this.props.match.params.id)
}

componentWillReceiveProps(nextProps) { // or componentDidUpdate
  if (nextProps.match.params.id !== this.props.match.params.id) {
    fetch(nextProps.match.params.id)
  }
}


 类似资料:
  • 问题内容: 在某些示例中,我看到了类似以下内容: 这些到底在做什么?它们是必备品吗? 问题答案: 正如finalFreq所指出的,我已经纠正了!“提供的示例将在React的未来版本中正常工作。不赞成使用React的方法,直接调用proptypes函数,但对组件进行注释将在当前和将来的版本中正常工作。” 如果您只是在JS中学习类型,我建议使用流程类型 ,它可以在构建时而不是在运行时使用。这在编辑器中

  • 在绝大多数情况下, React都是清晰直观的. 但是也不乏有一些小陷阱, 不注意的话有时候也会给你”意外的惊喜”. 下面我们就来介绍一下这些小陷阱 参考资料 React Gotchas Top 5 React Gotchas

  • 在这一个章节中我们会提供一些CSS In JS的实践. 如果你还不太明白为什么要CSS In Js, 作者vasan推荐你看一看下面的 talk by Vjeux 相关文章 Patterns for style composition in React Inline style vs stylesheet performance

  • 问题内容: 对于事件处理程序,可以在react中使用闭包吗?例如,我在导航中有一些功能和很多菜单,在导航组件中我使用的是这样的: 还是我应该只喜欢箭头功能? 第一个变种确实使代码更清洁,但是我担心大量此类元素的性能 问题答案: 两者都应避免。 虽然它们都可以工作,但是它们都具有相同的弱点,即它们会导致不必要的渲染,因为该函数是动态创建的,因此将呈现为不同的对象。 您不希望使用任何一种方法,而是要以

  • 问题内容: 我创建了该组件,当我转到一个不存在的页面时,它可以正常工作。但是,它出现在我的所有页面中的是同一页面,而不仅仅是不存在的页面。这是组件: 这就是我在主页中使用它的方式: 如您所见,我曾经用来创建404页面,但是该组件也出现在每个现有页面中。我怎样才能解决这个问题? 问题答案: 试试这个:

  • 我使用了react datepicker。我试图从另一个组件作为props收到的值中设置react datepicker的值,但要么它没有显示该值,要么它显示了一个空白页面,显示“错误的时间格式”。 日期选取器代码: 我检查了控制台,发现日期选择器组件成功接收了props,但我仍然无法设置该值。

  • `` [ {“Example1”:“503987964457159371”,“Sports”:“Box”,“AppName”:“Admin”,“Description”:“Boxing”},{“Example1”:“902867793529808056”,“Sports”:“KickBox”,“AppName”:“Admin”,“Description”:“KickBoxing”},{“Examp

  • React在处理事件(event时), 事实上使用了SyntheticEvent对象包裹了原生的event对象. 这些React自己维护的对象是相互联系的, 意味着如果对于某一个事件, 我们给出了对应的响应函数(handler), 其他的SyntheticEvent对象也是可以重用的.这也是React提升性能的秘诀之一. 但是这也意味着, 如果想要通过异步的方式访问事件对象是不可能的, 因为出于r