如果您的 store 不是标准的Javascript对象{},那么您可能需要将 sliceState 配置传递给createReactNavigationPlugin。该函数获取状态并返回包含React Navigation对象的状态片段。它在Navigator中用于将 state 映射到其属性,并用于侦听 navigation state 更改的中间件。默认情况下使用state.nav,在大多数情况下它可以正常工作。
如果你的 store 是一个 Immutable JS 对象,你可能需要传递 sliceState: state => state.get('nav') 作为 createReactNavigationPlugin 的配置。这里有一个小例子:
// index.js
import { init, dispatch } from '@rematch/core'
import createReactNavigationPlugin from '@rematch/react-navigation'
import * as ReactNavigation from 'react-navigation'
import Routes from './Routes'
import { combineReducers } from 'redux-immutable';
import { Map } from 'immutable';
// add react navigation with redux
const { Navigator, reactNavigationPlugin } = createReactNavigationPlugin({
Routes,
initialScreen: 'Landing',
sliceState: state => state.get('nav') // Returns Immutable JS slice
})
const store = init({
initialState: fromJS({}),
plugins: [reactNavigationPlugin],
redux: {
initialState: Map(), // Initializes a blank Immutable JS Map
combineReducers: combineReducers, // Combines reducers into Immutable JS collection
},
})
export default () => (
<Provider store={store}>
<Navigator />
</Provider>
)