【问题标题】:ReactNative Expo Redux ReferenceError: Can't find variable: documentReactNative Expo Redux ReferenceError:找不到变量:文档
【发布时间】:2021-05-02 10:45:59
【问题描述】:

世博会:3.27.4 => 4.1.3

react-native-cli: 2.0.1

反应原生:0.62.2 => 0.63.4

@reduxjs/工具包:1.5.0

react-redux: 7.2.2

redux:4.0.5

我是 react-native 的新手,正在尝试将 Redux 实施到我的 Expo 应用程序中。 这段代码构建了多次(我认为这是因为 expo registerRootComponent(App)),然后一旦它运行我得到一个:

“ReferenceError:找不到变量:文档”

我的 index.js 目前出现错误的地方是这样的:

    import { registerRootComponent } from 'expo';

    import App from './App'
    import React from 'react'
    import ReactDOM from 'react-dom'
    import store from './app/store'
    import { Provider } from 'react-redux'


    ReactDOM.render(
        <Provider store={store}>
          <App />
        </Provider>,
    document.getElementById('root')
    )

    registerRootComponent(App);

我也尝试过将它自己的功能放入其中,因为我遇到了类似的错误,这有帮助。

function App () {
    return (
        ReactDOM.render(
          <Provider store={store}>
              <MainFunc />
          </Provider>,
          document.getElementById('root')
        )
    )
}

但它又一次找不到文件。请帮我找文件。

【问题讨论】:

    标签: react-native redux expo referenceerror


    【解决方案1】:

    不是一个完美的解决方案。

    我无法使 ReactDOM.render 部分工作,但使用钩子似乎可以很好地重新渲染我的组件。

    步骤 1

    从 index.js 中删除 RectDOM.render 并替换为标准 expo:

    import { registerRootComponent } from 'expo';
    
    import App from './App';
    
    registerRootComponent(App);
    

    第二步

    使用 Provider 将 App() 内容包围起来(不要忘记导入 Provider 并存储):

    import store from './app/store';
    import { Provider } from "react-redux";
    
    function App () {
      return (
        <Provider store={store}>
          <Components/>
        </Provider>
      )
    }
    

    第三步

    在 redux 内存发生更改时要重新加载的组件中,创建对象的实例:

      const currentTicket = useSelector((state) =>
        state.tickets.find((ticket) => ticket.id == global.currentTicketID)
      );
    

    注意:我的 redux 存储是一个票据对象数组,所以我必须使用数组查找函数找到我想要使用的票据

    然后创建一个接收实例值的钩子:

      useEffect(() => {
        //code you want to run on change of the instance value
      }, [currentTicket.num]);
    

    注意:这仅在您有功能组件时才有效(不是类)

    【讨论】:

      猜你喜欢
      • 2019-07-29
      • 2020-12-10
      • 2023-01-19
      • 1970-01-01
      • 2014-02-20
      • 2018-04-24
      • 1970-01-01
      • 2016-10-30
      • 2012-03-18
      相关资源
      最近更新 更多