ReactNative Expo Redux 引用错误:找不到变量:文档



expo:3.27.4=>4.1.3

react-native-cli: 2.0.1

react-native:0.62.2=>0.63.4

@reduxjs/工具包:1.5.0

react-redux: 7.2.2

的再现:你

我是新的反应原生和我试图实现Redux到我的世博会应用程序。这段代码构建多次(我假设这是因为博览会registerRootComponent(App)),然后一旦它运行,我得到一个:

"ReferenceError: Can't find variable: document">

我的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。渲染部分工作,但使用钩子似乎可以很好地重新渲染我的组件。

步骤1

移除RectDOM。从index.js渲染并替换为标准的expo:

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

用Provider包围你的App()内容(不要忘记导入Provider和store):

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

注意:这只适用于当你有功能组件(而不是类)

最新更新