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
导致store
被 undefined
.
我的目录结构如下所示
.
??? 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混合,但是什么阻止了它的工作?其他人似乎成功地使用相同的解决方案(参见上述帖子).
发现问题了。我是对的 - 它\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
归档时间: |
|
查看次数: |
4258 次 |
最近记录: |