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 })
}
})
}