Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 理解React中的状态_Reactjs_State - Fatal编程技术网

Reactjs 理解React中的状态

Reactjs 理解React中的状态,reactjs,state,Reactjs,State,我正在创建一个应用程序,它根据“切换器”的复选框值和列表元素的复选框值显示和隐藏页面上的UI元素,列表元素是从此.state.items创建的 应用程序的初始状态设置为: state = { items: [ { id: 1, name: 'Water', isComplete: false }, { id: 2, name: 'Salt

我正在创建一个应用程序,它根据“切换器”的复选框值和列表元素的复选框值显示和隐藏页面上的UI元素,列表元素是从
此.state.items创建的

应用程序的初始状态设置为:

state = {
    items: [
        {
            id: 1,
            name: 'Water',
            isComplete: false
        }, {
            id: 2,
            name: 'Salt',
            isComplete: false
        }, {
            id: 3,
            name: 'Bread',
            isComplete: false
        }
    ],
    isChecked: false,
    currentItem: '',
    inputMessage: 'Add Items to Shopping Basket'
}
我创建了以下方法,该方法过滤
,并返回所有
isComplete:false
,然后用这些返回的项设置新状态

toggleChange = (e) => {
  this.setState({isChecked: !this.state.isChecked});
  if (!this.state.isChecked) {
    const filtered = this.state.items.filter(isComplete);
    this.setState({items: filtered})
  } else {
    // display previous state of this.state.items
  }
}

当我将“toggler”设置为false时,如何返回到“Previous”状态?

如果您只需要保留默认列表,则将其完全保留在状态之外 只需将筛选列表保持在状态

这样,您可以始终筛选原始列表

您甚至可以考虑在渲染方法本身中进行过滤,而不让过滤的列表处于状态。

如果您需要在进行更改之前返回(保留历史记录)
您可以在您的状态中维护另一个筛选列表。

如果您只需要保留默认列表,则将其完全保留在非状态 只需将筛选列表保持在状态

这样,您可以始终筛选原始列表

您甚至可以考虑在渲染方法本身中进行过滤,而不让过滤的列表处于状态。

如果您需要在进行更改之前返回(保留历史记录)
您可以在您的状态中维护另一个筛选列表。

我不确定您想做什么,但是,如果您实现componentWillUpdate(),您可以访问下一个状态和当前状态

-下一个状态就是你的状态,而这个状态就是现在的状态

您可以在更新this.state之前将其保存到另一个名为this.oldState的变量中,然后再引用它


然而,由于状态本身不保留历史,你可能会考虑用不同的方式来解决这个问题。

< p>我不确定你想做什么,但是,如果你实现了组件WrutUpDeUE()()你可以访问下一个状态和当前状态。 -下一个状态就是你的状态,而这个状态就是现在的状态

您可以在更新this.state之前将其保存到另一个名为this.oldState的变量中,然后再引用它


但是,既然国家不保留历史,你可以考虑用不同的方式来解决这个问题。< / P>不要将过滤列表保持在状态中。只需在
render
中动态筛选即可。不要将筛选列表保持在状态。只需在
render
中进行动态过滤。是的,我将其放置在render上,这是我如何避免状态更改的,谢谢。是的,我将其放置在render上,这是我如何避免状态更改的,非常感谢