javascript - 无法解构 'history' 的属性 'undefined',因为它未定义。 --React.js

标签 javascript reactjs react-router history

我在路由器的组件(即 AddMovie 组件)中使用了“历史”对象。但三行之后,我再次使用它,它给出了这个错误: 类型错误:无法解构“未定义”的属性“历史记录”,因为它未定义。

 77 |    <Route path="/add" render = { ({history}) => (
 78 |   <AddMovie onAddMovieprop={(newMovie) => { this.addMovie(newMovie); history.push("/"); }} />
  79 | )}>
  80 | </Route>
> 81 | <Route path="/edit/:id" render = { ( props, {history} ) => (
     | ^  82 |   <EditMovie {...props} onEditMovieProp = {(id, updatedMovie) => { this.editMovie(id, updatedMovie); this.props.history.push("/"); }}/>
  83 |     )}>
  84 | </Route>
我该如何修复它? 78行和82行几乎一样怎么可能?

这是我的 App.js 代码的渲染部分:

render(){
    let filteredMovies = this.state.movies.filter(
      movie => { return (movie.name.indexOf(this.state.searchQuery.toLowerCase()) !== -1) }
    ).sort((a,b) => {
      return a.name > b.name ? 1 : b.name> a.name ? -1 : 0; 
    })
    return (
     <Router>
        <div className="App">
          <Switch>
            <Route path="/" exact render = {() => (
              <div className="container" >
                <Searcher searchMovieProp = {this.searchMovie} addHistoryProp = {this.addHistory} />
                <MovieList movies= {filteredMovies} removeMovieProp = {this.removeMovie} />
              </div>
            )}>
            </Route>
            <Route path="/add" render = { ({history}) => (
              <AddMovie onAddMovieprop={(newMovie) => { this.addMovie(newMovie); history.push("/"); }} />
            )}>
            </Route>
            <Route path="/edit/:id" render = { ( props, {history} ) => (
              <EditMovie {...props} onEditMovieProp = {(id, updatedMovie) => { this.editMovie(id, updatedMovie); history.push("/"); }}/>
                )}>
            </Route>
          </Switch>
        </div>
     </Router>
    );
  }

最佳答案

这是您需要做的:

<Route
  path="/edit/:id"
  render={({history, ...props}) => (
    <EditMovie
      {...props}
      onEditMovieProp={(id, updatedMovie) => {
        this.editMovie(id, updatedMovie);
        history.push("/");
      }}
    />
  )}
></Route>;

关于javascript - 无法解构 'history' 的属性 'undefined',因为它未定义。 --React.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65806014/

相关文章:

javascript - 在 AngularJS 中启动一个指令后不调用 $watch

javascript - HTML 5 Canvas 绘制直线的示例?

javascript - Jquery Popup 不居中

javascript - React Form 文本框不会在击键之间保留数据

reactjs - 如何在 React Native 中播放 Lottie 动画(.json 文件)的片段

javascript - react.js typescript spread(...) 仅添加最后一个元素

javascript - react router v^4.0.0 Uncaught TypeError : Cannot read property 'location' of undefined

javascript - 编辑传单中的功能属性

reactjs - 如何使用 react-router 执行多个可选参数?

javascript - 在React中使用react-router时组件消失