reactjs - 重新加载后将用户事件保留在状态中

标签 reactjs redux

我创建了一个应用程序,用户可以使用react和redux搜索与电影相关的信息。在搜索时,用户可以应用一些过滤器(例如持续时间)。我希望此过滤器处于事件状态,直到用户取消选择它们,即使用户重新加载页面后也是如此。

问题: 当前场景用户应用过滤器应用程序将调度一个事件并将过滤器信息存储在 Redux 状态中。

但是一旦用户刷新页面,有关过滤器的信息就会丢失。

尝试的解决方案: 我尝试过一种使用 session 存储和本地存储的解决方案,但我对该解决方案并不信服。

如果有人能够展示解决此问题的更好方法(如果有),那就太好了。

最佳答案

对于一些简单的状态,比如过滤器的当前值,最好使用位置。

例如,您有以下页面:http://example.com/users
然后您可以像这样保留过滤器:http://example.com/users?group=admin

这种方法的好处很简单:您明确地告诉用户页面的实际状态,他可以复制该状态、保存书签或发送给其他人。

要在 React 代码中实现此目的,您可以执行以下操作(我假设您的应用程序中有 React-router):

class UsersPage extends React.Component {

  // should be called somewhere in onClick
  filterUserGroup(groupName) {
    this.props.router.push({
        pathname: this.props.location.pathname,
        query: {
          group: groupName
        }
    });
  }

  componentWillReceiveProps(nextProps) {
    if(nextProps.location !== this.props.location) {
        //filter was changed, you can apply new filter value
        this.setState({
          selectedGroup: nextProps.location.query.group
        });
    }
  }

}

关于reactjs - 重新加载后将用户事件保留在状态中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39519771/

相关文章:

reactjs - Redux 子组件不更新父组件状态

reactjs - defaultValue 或值不适用于 FormItem ANTD

javascript - react JS : ability to detect switching tab in browser

reactjs - 无法读取未定义的属性 ‘params’ (React Router 4)

javascript - 将函数传递给子列表项

javascript - 从 Redux Store 更新后,React Component 无法重新呈现

reactjs - 在 typescript 中嵌套连接的 redux 容器和演示组件

javascript - redux 中的应用程序与本地状态

javascript - 使用 react-redux 在单击按钮时添加一个新的精确元素

javascript - 如何为 redux 连接的组件自动生成 typescript 接口(interface)