【问题标题】:State value doesn't change when I call a function with setstate当我使用 setstate 调用函数时,状态值不会改变
【发布时间】:2020-04-28 09:12:06
【问题描述】:
addTOList= (id) =>{
  const movieId = id
  const movie = movies.find( ({ id }) => id === movieId );
  const stateMovie = [...this.state.movie, movie]
  console.log(stateMovie)
  this.setState({
    movie : stateMovie
  })
  console.log(this.state.movie)
  localStorage.setItem('movies', JSON.stringify(this.state.movie))
  this.state.movie.map(mov =>{
  })
}

点击(添加到列表)按钮时会触发此功能。 但我必须单击两次才能更改状态。` 抱歉英语太差了

【问题讨论】:

  • 状态只在重新渲染时改变,所以值在函数期间永远不会改变。

标签: javascript reactjs


【解决方案1】:

react 状态变化是同步的。

检查这个问题并回答here

【讨论】:

    【解决方案2】:

    如果你的“下一个状态”依赖于“上一个状态”,那么你应该使用这个模式:

      this.setState(prev => ({
        ...prev,
        movie : [...prev.movie, movie],
      }))
    

    此外,您必须等到 react 应用状态更改后,才能在控制台语句中看到更改。

    【讨论】:

      【解决方案3】:

      setState 是一个异步函数,它不会以异步方式设置状态,但是以后,你可以使用回调函数,如果你想在设置状态运行后运行代码sn-p:

      addTOList = () => { this.setState({ movie : stateMovie }, () => { console.log(this.state.movie) }) }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-16
        • 2019-07-19
        相关资源
        最近更新 更多