Javascript 从localStorage存储和提取JSX元素

Javascript 从localStorage存储和提取JSX元素,javascript,reactjs,local-storage,jsx,Javascript,Reactjs,Local Storage,Jsx,在我的React应用程序中,我将一个javascript对象存储在localStorage中。此对象表示应用程序中使用的主题。问题在于此对象的一个组件是JSX元素: { ... icon: <Logo />, ... } 你知道我可以从localStorage存储、提取并使用JSX元素吗 不应将react组件引用存储在字符串中,JSON.stringify无法正确序列化它们() 我建议您将组件替换为其名称(或某个键),然后使用该名称渲染相应的组件: { ...

在我的React应用程序中,我将一个javascript对象存储在localStorage中。此对象表示应用程序中使用的主题。问题在于此对象的一个组件是
JSX
元素:

{
  ...
  icon: <Logo />,
  ...
}

你知道我可以从localStorage存储、提取并使用JSX元素吗

不应将react组件引用存储在字符串中,JSON.stringify无法正确序列化它们()

我建议您将组件替换为其名称(或某个键),然后使用该名称渲染相应的组件:

{
  ...
  icon: 'Logo', // then render the appropriate component based on this
  ...
}

您不应该将react组件引用存储在字符串中,并且JSON.stringify无法正确序列化它们()

我建议您将组件替换为其名称(或某个键),然后使用该名称渲染相应的组件:

{
  ...
  icon: 'Logo', // then render the appropriate component based on this
  ...
}

为什么不将图标值更改为字符串,以引用所需的图标类型

例如:

存储在localStorage中的对象:

{
  ...
  icon: "logo",
  ...
}
在您的代码中,只需设置一个条件:

render() {
  return (
    <>
      {theme.icon === 'logo'? <Logo /> : null}
    </>
  )
}
render(){
返回(
{theme.icon=='logo'?:null}
)
}
或者制作一个图标通用组件,将图标类型作为道具,并渲染正确的组件:

render() {
  return (
    <>
      {<Icon type={theme.icon}/>}
    </>
  );
}
render(){
返回(
{}
);
}

为什么不将图标值更改为字符串,以引用您想要的图标类型

例如:

存储在localStorage中的对象:

{
  ...
  icon: "logo",
  ...
}
在您的代码中,只需设置一个条件:

render() {
  return (
    <>
      {theme.icon === 'logo'? <Logo /> : null}
    </>
  )
}
render(){
返回(
{theme.icon=='logo'?:null}
)
}
或者制作一个图标通用组件,将图标类型作为道具,并渲染正确的组件:

render() {
  return (
    <>
      {<Icon type={theme.icon}/>}
    </>
  );
}
render(){
返回(
{}
);
}

如果您计划在应用程序中的多个其他组件中使用此图标,而不是将组件存储在一个键中,并根据键选择要使用的正确组件,我建议您查看上下文API,而不是将组件存储在多个其他组件中,存储在密钥中并根据密钥选择要使用的适当组件,如果您计划在多个其他组件中的整个应用程序中使用此图标,我建议您查看上下文API。是的,这是一个选项,但我的条件比组件的类型更具体。因此,只使用
JSX
对象会使事情变得更简单。但如果没有干净简单的方法,我会选择更传统的方法。是的,这是一种选择,只是我的条件比组件的类型更具体。因此,只使用
JSX
对象会使事情变得更简单。但如果没有干净简单的方法,我会选择更传统的方法。欢迎使用Stack Overflow,感谢您尝试回答帖子。我对你的帖子投了赞成票,我希望这有助于激励你继续进行堆栈溢出欢迎来到堆栈溢出,感谢你尝试回答帖子。我对你的帖子投了赞成票,我希望这有助于激励你继续写下去