导入redux商店未定义(加载订单问题?)

ixj*_*xje 7 javascript react-native redux

更新2 - 添加显示问题的最小"工作"示例

我尽可能地减少了项目,同时仍然显示问题,允许人们尝试想法/调试,如果他们感兴趣的话 github:store_import_test

错误发生在:request.js

注意:我知道赏金即将到期,但如果发生这种情况,我会重新启用它.我非常感谢到目前为止提出的所有想法/帮助!

结束更新2

更新1 - 目的描述:

我想在"效用函数"中访问商店中的值(可以改变超时).根据redux docs subscribe是一个有效的选项.

结束更新

我正在尝试在组件之外导入我的redux-store(在request.js下面看到),类似于:在react组件之外访问redux store的最佳方法是什么?

然而,所有这些解决方案(包括https://github.com/reactjs/redux/issues/776)不能工作,因为我request.js尝试导入商店之前createStore()被称为store.js导致storeundefined.

我的目录结构如下所示

 .  
 ??? app  
 ?   ??? api  
 ?   ??? network 
 ?   |    ??? request.js 
 ?   ??? app.js  
 ?   ??? store.js  
 ??? index.android.js  
 ??? index.ios.js
Run Code Online (Sandbox Code Playgroud)

index.android/ios.js是入口点,只是加载app.js

index.android/ios.js

import App from './app/app'

app.js

import store from './store'
class App extends React.Component {
    render() {
        return (
            <Provider store={store}>
                    <RootStackNavigation />
            </Provider>
        )
    }
} 
Run Code Online (Sandbox Code Playgroud)

store.js

...
const store = createStore(reducer, initialState, middleware())
export default store
Run Code Online (Sandbox Code Playgroud)

request.js

import store from '../../store'
store.subscribe(listener)
...
const someFunc(){}
export default someFunc
Run Code Online (Sandbox Code Playgroud)

我的想法/我尝试过/我迷路的地方

注意:store导入路径request.js有效,双重检查注2:store可用于app.js程序的其余部分

我认为import store from '../../store'in request.js会引发这const store = createStore(reducer, initialState, middleware())条线,但显然它确实如此.

尝试1

我试图也这样导出商店:

export const store = createStore(reducer, initialState, middleware())

并将其导入request.js为:

import {store} from '../../store

思考也许'聪明'的默认加载会产生一些我不知道/理解的魔法.同样的错误,未定义

尝试2添加getStore()store.js

let store = null
store = createStore(reducer, initialState, middleware())
export function getStore() {
    if (store == null) {
        store = createStore(reducer, initialState, middleware())
    }
    return store
}

export default store
Run Code Online (Sandbox Code Playgroud)

不起作用,createStore尚未初始化的论据.

我必须误解加载过程或将其与python混合,但是什么阻止了它的工作?其他人似乎成功地使用相同的解决方案(参见上述帖子).

Ale*_*nov 3

发现问题了。我是对的 - 它\xe2\x80\x99是一个周期。在store.js您需要reducers/index.js然后navigation.js然后../navigators/RootNavigationConfiguration哪个需要Home.js哪个需要/api/network哪个需要request.js并且它需要store哪个此时尚未初始化。在导出之前,尝试将store.subscribe(listener)listener函数一起移至右侧。store.js不要忘记import store.js从\xe2\x80\x99中删除request.js

\n