微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不能使用 useState React Hook 更新状态,“警告:无法在未安装的组件上执行 React 状态更新这是一个空操作,但是我”

如何解决为什么我不能使用 useState React Hook 更新状态,“警告:无法在未安装的组件上执行 React 状态更新这是一个空操作,但是我”

我正在创建一个简单的应用程序,其状态如下

 const [questions,setquestions] = useState([ {
        id: '1',author: 'Sarahedo',optionOne: {
          Votes: ['Sarahedo'],text: 'have horrible short term memory',},optionTwo: {
          Votes: [],text: 'have horrible long term memory'
        }
      },{
        id: '2',author: 'johndoe',optionOne: {
          Votes: [],text: 'become a superhero',optionTwo: {
          Votes: ['johndoe','Sarahedo'],text: 'become a supervillian'
        }
      },]

这个函数更新状态(你不需要了解完整的功能

const VoteHandler = (id,selectedOption,Voter) => {

      questions_copy.filter(singleObject => 
        {if(singleObject.id === id){
          singleObject["optionOne"]["text"] === selectedOption ? singleObject["optionOne"]["Votes"].push(Voter) : singleObject["optionTwo"]["Votes"].push(Voter)
          }
        }
      )
      setquestions(questions_copy)
    }

我已经使用 props 将这个函数发送到它的子组件,当这个函数调用时,它给了我这个错误

警告:无法对已卸载的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请取消 useEffect 清理函数中的所有订阅和异步任务。

调用子组件(另一个路由器)而言,我是这样调用

const onSubmitHandler = (e) => {
        e.preventDefault()
        props.history.location.data.VoteHandler(props.location.state.id,props.location.state.dummyLogin)
        props.history.push("/")
    }

我只是在更新状态,我不知道它为什么会这样

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。