Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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保存组件的当前状态_Reactjs - Fatal编程技术网

Reactjs保存组件的当前状态

Reactjs保存组件的当前状态,reactjs,Reactjs,我有组件A和组件B。在组件A中,用户可以对元素列表应用过滤器,并使用侧栏在两个组件之间导航。每当用户单击转到B,再返回A时,过滤器都会设置回初始状态。保存组件A的状态的最佳方法是什么,这样当他们返回组件A时,可以看到他们最初应用的所有过滤器 听起来好像每次切换视图时都在创建/销毁,所以它会丢失它存储的任何状态 将状态向上移动到a和B的父组件,并通过道具将其向下传递到a。父组件不会被销毁,因此状态将保持不变 可能有助于澄清这一点。据我所知;react中的状态不会被清除,直到它被编程为这样做,页面被

我有组件A和组件B。在组件A中,用户可以对元素列表应用过滤器,并使用侧栏在两个组件之间导航。每当用户单击转到B,再返回A时,过滤器都会设置回初始状态。保存组件A的状态的最佳方法是什么,这样当他们返回组件A时,可以看到他们最初应用的所有过滤器

听起来好像每次切换视图时都在创建/销毁,所以它会丢失它存储的任何状态

将状态向上移动到a和B的父组件,并通过道具将其向下传递到a。父组件不会被销毁,因此状态将保持不变


可能有助于澄清这一点。

据我所知;react中的状态不会被清除,直到它被编程为这样做,页面被刷新或转到另一个页面。如果您提供代码,可能会更清楚。有一件事,我用来保持以前的状态是:


this.setState((previousState)=>({stateName:previousState.stateName.concat(newValue)}))

除非刷新页面,否则A和B的父状态不会更改


另一种方法是,您可以使用AsynStorage或将数据存储在服务器上,以便在稍后返回组件A时检索数据,即使您刷新了页面

我建议您使用LocalStorage,传入过滤器,这样它就不会被重置。在安装组件时,应始终首先检查localstorage是否有值

您可以通过以下方式进行设置:

localStorage.setItem('variableName', value);
localStorage.getItem('variableName');
并通过以下途径获取:

localStorage.setItem('variableName', value);
localStorage.getItem('variableName');

卸载后组件的状态将重置很高兴我提供了帮助,干杯!