2017-06-15 97 views
0

我试图通过我的React Native应用程序中的TabViewAnimated切换到另一个选项卡时出现以下错误。提供商不支持通过TabViewAnimated动态更改商店

enter image description here

我有两个子部件和Provider的使用如下:

render() { 
     const store = createStore(reducers, {}, applyMiddleware(ReduxThunk)); 

     return (
      <Provider store={store}> 
       <TabViewAnimated 
        style={styles.container} 
        navigationState={this.state} 
        renderScene={this._renderScene} 
        renderHeader={this._renderHeader} 
        onRequestChangeTab={this._handleChangeTab} 
       /> 
      </Provider> 
     ); 
    } 

第一子组件具有经由道具进入状态树中,但加载第二子当组件我得到错误。

我的依赖关系如下:

"react": "16.0.0-alpha.6", 
"react-native": "^0.44.0", 
"react-native-tab-view": "0.0.66", 
"react-redux": "^5.0.5", 
"redux": "^3.6.0", 
"redux-thunk": "^2.2.0" 

任何建议表示赞赏!

回答

1

问题是,每次render被称为新的store实例被创建,这会导致此错误。

您可以在一个地方实例化你的店解决这个问题它只会发生一次,通常在你的应用程序的入口点或在导出一个单独的文件吧:

// store.js 
export default createStore(reducers, {}, applyMiddleware(ReduxThunk)); 

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

... 

    render() { 
    <Provider store={ store }> ... </Provider> 
    } 
... 

希望这会有所帮助!

+0

更新:使用我的旧方法创建商店,但是在组件层次结构的父类中,问题不再存在。您的诊断是正确的,问题是每次选项卡更改时,都会再次调用渲染方法,从而创建新的商店。谢谢! – john