почему мое состояние не обновлялось при использовании history.push ()?

Я использую history.push вот так:

state = {
        resumeList : [],
      }
     Searchinp = (event) => {
           event.preventDefault()
           const props = this.props
               console.log(props)
           const searchValue = event.target.value
           this.setState({
               Search:searchValue
           })
           console.log(searchValue)
           props.history.push({search: `phrase=${searchValue}` }); 
          reqhandler({
            url: exporturl.getportofoliorequest(),
            method : "get",
            headers : {
                "Authorization": `Bearer ${gettoken().acctoken}`       
             },
             params : {
                 lang : getLang(),
                 phrase : event.target.search.value
             }
            }).then(res => {
                console.log(res.data)
                this.setState({
                    ...this.state,
                    resumeList : res.data.results,
                })
                console.log(this.state.resumeList)  
                }).catch(err => {
                    console.log("Error :" , err)
                })
           }     


когда я использую history.poush (), мое состояние не обновлялось, но URL-адрес изменялся. но когда я удаляю его, мое состояние обновляется, пожалуйста, помогите мне


person mohammad mohammadi    schedule 23.12.2019    source источник


Ответы (2)


history.push отправляет вас на другую страницу (перенаправление), поэтому он останавливает выполнение вашей функции

Всегда используйте history.push в конце вашей функции (или там, где вы хотите завершить свою функцию)

state = {
        resumeList : [],
      }
     Searchinp = (event) => {
           event.preventDefault()
           const props = this.props
               console.log(props)
           const searchValue = event.target.value
           this.setState({
               Search:searchValue
           })
           console.log(searchValue)

          reqhandler({
            url: exporturl.getportofoliorequest(),
            method : "get",
            headers : {
                "Authorization": `Bearer ${gettoken().acctoken}`       
             },
             params : {
                 lang : getLang(),
                 phrase : event.target.search.value
             }
            }).then(res => {
                console.log(res.data)
                this.setState({
                    ...this.state,
                    resumeList : res.data.results,
                })
               props.history.push({search: `phrase=${searchValue}` }); 
                console.log(this.state.resumeList)  
                }).catch(err => {
                    console.log("Error :" , err)
                })
           }     
person Renaldo Balaj    schedule 23.12.2019
comment
состояние обновлено, моя проблема: мое состояние, отображаемое в таблице, ничего не показало, вы можете мне помочь? - person mohammad mohammadi; 23.12.2019

Перейдите к другому компоненту в качестве обратного вызова после обновления состояния.

reqhandler({
            url: exporturl.getportofoliorequest(),
            method : "get",
            headers : {
                "Authorization": `Bearer ${gettoken().acctoken}`       
             },
             params : {
                 lang : getLang(),
                 phrase : event.target.search.value
             }
            }).then(res => {
                console.log(res.data)
                this.setState({
                    ...this.state,
                    resumeList : res.data.results,
                },{
               props.history.push({search: `phrase=${searchValue}` });  
                })
                }).catch(err => {
                    console.log("Error :" , err)
                })
person akhtarvahid    schedule 23.12.2019
comment
состояние обновлено, моя проблема: мое состояние, отображаемое в таблице, ничего не показало, вы можете мне помочь? - person mohammad mohammadi; 23.12.2019