ReactNative Expo Redux ReferenceError:找不到变量:文档 步骤 1步骤 2步骤 3

问题描述

博览会: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

还原:4.0.5

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

“参考错误:找不到变量:文档”

我目前发生错误的 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')
        )
    )
}

但是它再次找不到文档。请帮我找文件

解决方法

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

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

步骤 1

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

import { registerRootComponent } from 'expo';

import App from './App';

registerRootComponent(App);

步骤 2

用 Provider 包围你的 App() 内容(不要忘记导入 Provider 并存储):

import store from './app/store';
import { Provider } from "react-redux";

function App () {
  return (
    <Provider store={store}>
      <Components/>
    </Provider>
  )
}

步骤 3

在 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]);

注意:这仅适用于具有功能组件(不是类)