清除handleChange函数上的状态

时间:2019-06-05 11:14:38

标签: reactjs

我在App组件上有一个函数来处理子组件上父级的状态更改,我调用该函数来更新每个页面的更改。

App组件上的makeHandleChange函数:

  makeHandleChange = (pageName, change) => {
    this.setState({
      ticket: { ...this.state.ticket, [pageName]: change },
    });
  };

票务状态:

  state = {
    ticket: {
      departments: {},
      categories: {},
      subCategories: {},
    },
  };

在每个页面上,我调用makeHandleChange函数来设置页面的更改,例如:

makeHandleChange('categories', pageChanges)

在我应用的最后一页上,我想清除整个ticket状态,可以通过调用makeHandleChange函数来做到这一点吗?

1 个答案:

答案 0 :(得分:2)

ItemsSource

该解决方案包括多次调用函数Yes, you can.-并且由于makeHandleChange()函数是setState(),因此最好使用可选的函数参数来防止副作用:

async

这样,您将根据当前状态更新状态。

直接回答您的问题:

选项#1

调用该函数3次。

makeHandleChange = (pageName, change) => {
  this.setState(state => ({
    ticket: { ...state.ticket, [pageName]: change },
  }));
};

选项2(适用于较大的页面尺寸)

makeHandleChange('departments', {});
makeHandleChange('categories', {});
makeHandleChange('subCategories', {});

替代解决方案

根据const pagesList = [ 'departments', 'categories', 'subCategories', // etc.. ]; for (let i = 0; i < pagesList.length; i++) makeHandleChange(pagesList[i], {}); 的建议,创建一个附加函数来处理这种特殊情况-并防止不必要的行为:

Mayank Shukla