繁体   English   中英

如何在多个页面上共享同一React组件的状态?

[英]How would a share the state of the same React component across multiple pages?

我有一个React组件,上面有一个开关(打开或关闭)。 开/关状态由组件自己的状态(this.state)处理。

但是我希望当用户从一页转到下一页时保持该状态。 例如,它们在home.html上,然后在用户单击到诸如about.html之类的另一个页面时出现。

而且这不是一个单页面的应用程序。 我是否需要Redux或Mobox或其他状态管理工具? 欢迎提出建议。

但是我希望当用户从一页转到下一页时保持该状态。

如评论中所述,最直接的方法可能是将状态存储到本地存储,并在组件安装时检索状态。

class Toggle extends Component {
  componentDidMount() {
    const storedValue = localStorage.getItem("my_value");
    if (storedValue) {
      this.setState({ value: storedValue });
    }
  }
  handleChange = e => {
    const value = e.target.value;
    this.setState({ value });
    localStorage.setItem("my_value", value);
  }
  render() {
    return ...
  }
}

而且这不是一个单页面的应用程序。 我是否需要Redux或Mobox或其他状态管理工具? 欢迎提出建议。

不,Redux和Mobx不是必需的,它们是状态容器,可以持久存储到本地存储(例如redux-localstoragemobx-localstorage ),但是关键只是持久存储到localstorage。

如果您不移动页面(整个页面刷新),而仅使用不同的组件,则只需在父组件中定义一个状态,然后在子组件中传递该状态以及可切换状态的函数即可。

函数如下所示:

ToggleState = newState => this.setState({myState:newState});

将此功能作为道具传递给子组件。

在子组件中将其用作

this.props.toggle(newState);

**但是如果跨多个页面,则可以进行本地存储**

希望这能解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM