Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js “最佳实践是什么?”;“重新渲染”;反应中的一种成分?_Node.js_Reactjs_Rest_Frontend - Fatal编程技术网

Node.js “最佳实践是什么?”;“重新渲染”;反应中的一种成分?

Node.js “最佳实践是什么?”;“重新渲染”;反应中的一种成分?,node.js,reactjs,rest,frontend,Node.js,Reactjs,Rest,Frontend,我映射了一个项目数组,当我删除一个项目时,它会删除数据库中的项目,如果我手动刷新页面,它就会消失。但是,单击“删除”按钮后,我希望“重新呈现”项目列表。据我所知,我需要将状态更改为“重新渲染”,所以我尝试设置布尔值,但它没有“重新渲染”。任何关于实现这一结果的最佳做法的建议都会有所帮助 class Profile extends Component { state = { username: '', movies: [], reRender: false <

我映射了一个项目数组,当我删除一个项目时,它会删除数据库中的项目,如果我手动刷新页面,它就会消失。但是,单击“删除”按钮后,我希望“重新呈现”项目列表。据我所知,我需要将状态更改为“重新渲染”,所以我尝试设置布尔值,但它没有“重新渲染”。任何关于实现这一结果的最佳做法的建议都会有所帮助

class Profile extends Component {
  state = {
    username: '',
    movies: [],
    reRender: false    <---- by changing this state, I want a re-render of the component
  }

  getUserMovies = () => {
    const token = localStorage.usertoken;
    const decoded = jwt_decode(token);

    axios.post('/getusermovies', {
      user: decoded.username
    }).then(response => {
      this.setState({
        username: decoded.username,
        // movieName: response.data.moviename
        movies: response.data
      })
      console.log(response.data)
    }).catch(error => {
      console.log(error + "err in the front end getusermovies function")
    })
  }

  componentDidMount() {
    this.getUserMovies();
  }

  deleteMovie = (itemId) => {
    axios.post('/delete', {
      movie: itemId
    }).catch(err => {
      console.log(err + "in the deleteMovie function in front end" + itemId)
    })

    this.setState(prevState => ({
      reRender: !prevState.reRender  <------ This is where I am calling a state.
    }))
  }

  render() {
    let movies = this.state.movies;
    return (
      <div className="container">
        <h1>{this.state.username}'s Movies: </h1>
        <div className="row">
          {movies.map(item =>
            <div className="profile-movies-box" >
              <img src={item.movie} alt='no image' className="movies-box-img" />
              <h4>{item.moviename}</h4>

              <button className="movie-buttons">
                <Link to={{
                  pathname: `/movie?movieName=${item.moviename}`,
                  state: { link: item.moviename }
                }}>View Movie</Link>
              </button>

              <button 
                className="movie-btn"
                value={item.moviename}
                onClick={() => { this.deleteMovie(item.moviename) }}
              >Delete Movie</button>
            </div>
          )}
        </div>
      </div>
    );
  }
}

export default Profile;
类配置文件扩展组件{
状态={
用户名:“”,
电影:[],
重播:错{
const token=localStorage.usertoken;
const decoded=jwt_decode(令牌);
axios.post(“/getusermovies”{
用户:decoded.username
})。然后(响应=>{
这是我的国家({
用户名:decoded.username,
//movieName:response.data.movieName
电影:response.data
})
console.log(response.data)
}).catch(错误=>{
log(错误+“前端getusermovies函数中的错误”)
})
}
componentDidMount(){
这是.getUserMovies();
}
deleteMovie=(itemId)=>{
axios.post(“/delete”{
电影:itemId
}).catch(错误=>{
console.log(前端的deleteMovie函数中的err+“+itemId)
})
this.setState(prevState=>({

reRender:!prevState.reRender您需要更新电影数组,删除已删除的项目

deleteMovie=(itemId)=>{
axios.post(“/delete”{
电影:itemId
})
。然后(res=>{
this.setState(prevState=>({
movies:prevState.movies.filter(m=>m.id!==itemId)
}));
})
.catch(错误=>{
console.log(前端delteMovie函数中的err+“+itemId)
})

}
您需要更新电影阵列,删除已删除的项目

deleteMovie=(itemId)=>{
axios.post(“/delete”{
电影:itemId
})
。然后(res=>{
this.setState(prevState=>({
movies:prevState.movies.filter(m=>m.id!==itemId)
}));
})
.catch(错误=>{
console.log(前端delteMovie函数中的err+“+itemId)
})

}
重新渲染不需要单独的状态,只需在单击“删除”时过滤掉电影,并使用要删除的项调用“删除”API即可。我找到了答案。这正是我所做的。谢谢,重新渲染不需要单独的状态,只需在单击“删除”时过滤掉电影,并使用要删除的项调用“删除”API即可e、 我明白了。这正是我所做的。非常感谢!我需要过滤原始数组。非常有意义!哈哈!非常感谢!我需要过滤原始数组。非常有意义