2017-06-15 96 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