Javascript 在不重新渲染的情况下执行某些操作后重置状态

Javascript 在不重新渲染的情况下执行某些操作后重置状态,javascript,reactjs,Javascript,Reactjs,我想在创建新任务后突出显示它。但是,当添加新任务时,整个表将重新呈现,因此,即使在呈现之前我有很多次要做一些事情,它也会被重置。因此,我声明了一个newTaskID:null状态来存储id,并在渲染后高亮显示它,这很好。但是,我还需要将newTaskID:null设置回null,这将再次导致重新渲染,这将重置我的表和突出显示的任务。我知道我错过了一些东西,但还不能理解它。请帮忙 构造函数(道具){ 此.state={ newTaskID:null } } createTask=(值)=>{ /.

我想在创建新任务后突出显示它。但是,当添加新任务时,整个表将重新呈现,因此,即使在呈现之前我有很多次要做一些事情,它也会被重置。因此,我声明了一个
newTaskID:null
状态来存储id,并在渲染后高亮显示它,这很好。但是,我还需要将
newTaskID:null
设置回null,这将再次导致重新渲染,这将重置我的表和突出显示的任务。我知道我错过了一些东西,但还不能理解它。请帮忙

构造函数(道具){
此.state={
newTaskID:null
}
}
createTask=(值)=>{
/.....
this.setState({newTaskID:value.id})
}
componentDidMount(){
甘特图附件('onGanttRender',函数(){
if(this.state.newTaskID){
//突出显示任务并将状态设置回null
highlightTask(this.state.newTaskID)
//将state设置回null,这样它就不会突出显示任何内容
this.setState({newTaskID:null})
}
})
}

向状态添加一个附加标志,以检查是否有突出显示的任务。应该是这样的:

this.state = {
  newTaskID: null,
  taskIsHighlighted: false,
}
当任务高亮显示时,应将
taskIsHighlighted
设置为true,并在下一次渲染中将其设置为false。您的
组件安装将是:

componentDidMount() {
    gantt.attachEvent('onGanttRender', function () {
        if (this.state.newTaskID) {
            //Highlight task and set state back to null
            highlightTask(this.state.newTaskID)
            //Set state back to null so it won't highlight anything
            this.setState({ taskIsHighlighted: true })
        }

        if (this.state.taskIsHighlighted) {
          this.setState({ newTaskID: null, taskIsHighlighted: false })
        }
    })
}