【问题标题】:Passing data between External js and React js/Redux在 External js 和 React js/Redux 之间传递数据
【发布时间】:2018-08-27 11:45:09
【问题描述】:

我已将 React-redux 集成到 externalJs 应用程序中(基于自定义 JS 框架构建)。我需要从 externalJS 为 redux 存储设置初始数据,但是 externalJs 无法访问反应存储来设置数据。当根 reactJS 组件安装在 DOM 上时,商店会被触发,但我需要在它安装在 DOM 上之前设置初始数据。我参考了以下链接,但他们无法解决我的问题。有人可以告诉我我错过了什么吗?

https://brettdewoody.com/accessing-component-methods-and-state-from-outside-react/

Accessing react components outside

我正在使用 webpacks,将 16.1 与 redux 反应

下面在 index.js 中给出的示例根组件结构

render() {

        return (
            <Provider store={store}>
                <Email ref={(EmailComponent) => { window.EmailComponent = EmailComponent }} />
            </Provider>
        );
    }

【问题讨论】:

  • 你想在没有 React 的情况下初始化 redux 存储吗?我是对的。??
  • @Praveen 抱歉,它的错字错误是 16.1
  • @SagarGavhane 是的,你是对的,

标签: javascript reactjs react-redux


【解决方案1】:

我假设您正在尝试将 EmailComponent 和“存储”公开给 DOM 和其他框架,因为您在全局 window 对象上声明它。 React.render 有一个回调作为第三个参数,您可以使用它来了解 React App 何时挂载到 DOM。

ReactDOM.render(<App />, document.getElementById('root'), function () {
  // now the root React App is mounted and the data from it will be available
  // your window.EmailComponent and window.store should now be avialable
  console.log(window.EmailComponent, window.store)

})



render() {
  window.store = store
        return (
            <Provider store={store}>

                <Email ref={(EmailComponent) => { window.EmailComponent = EmailComponent }} />
            </Provider>
        );
    }

【讨论】:

  • 我并没有试图公开组件,我提到了我已经尝试过的 sn-p,实际上我试图在 DOM 中呈现的反应组件之前访问 redux 存储,它的只有内置在 react rest 或 CustomJS 中的组件我需要在渲染之前传递一些数据存储,目前我正在显示加载图像,但它不像预期的那样应该与其他组件一起渲染
  • 好吧,我确实听起来有点不寻常,你正在尝试做的事情。检查我编辑的答案,看看您是否在该回调中获得了可用的商店。我没有尝试它是否有效,但这就是我尝试接近它的方式。
  • 不能在 React 构造函数中做吗?
  • 是的,你可以在构造函数中完成。您可以访问道具的任何地方。但在安装组件之前,它在 DOM 中不可用。所以也许最好的地方是 componentDidMount。
猜你喜欢
  • 2019-01-04
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多