【问题标题】:How to mount React component after dynamic him import动态他导入后如何挂载React组件
【发布时间】:2019-12-03 11:03:51
【问题描述】:

在 React 组件中尝试过这段代码:

this.setState({
    module: import ('../1superSet/dashboard/containers/Dashboard'), // eslint-disable-line
  });

- 必须在某个请求之后导入。 下一个:

{this.state.module && this.state.module.then((res) => {
      console.log('res', res)
      const Dashboard = res
      return (<Dashboard />)
    })}

但是 React 不能渲染这个,因为 Dashboard 是对象:

“React.createElement: type is invalid - 期望一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:对象。”

【问题讨论】:

    标签: reactjs import


    【解决方案1】:

    您正在尝试渲染Promise (this.state.module.then)。您应该加载组件并仅在加载后将其设置在侧面。

    foo() {
      const Dashboard = await import('../1superSet/dashboard/containers/Dashboard');
      this.setState({ Dashboard });
    }
    

    然后您可以通过执行以下操作来渲染它:

    render() {
      const { Dashboard } = this.state;
    
      return (
        <div>
          { Dashboard && (<Dashboard/>)
        </div>
      );
    }
    

    查看React.lazy 以获得更多简化和附加功能。

    【讨论】:

    • 此代码还返回:“React.createElement:类型无效 - 期望字符串(对于内置组件)或类/函数(对于复合组件)但得到:对象。”
    • Dashboard 为我的组件返回了 Connect 函数
    猜你喜欢
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2021-10-08
    • 2020-03-02
    • 1970-01-01
    • 2017-04-19
    相关资源
    最近更新 更多