找不到" store"显示模态

时间:2017-05-10 05:42:59

标签: reactjs react-native redux react-redux

这是我应用的起点:

const App = () => (
    <Provider store={store}>
        <StackNav />
    </Provider>
);

AppRegistry.registerComponent('MyApp', () => App);

对于StackNav,我有以下配置:

const routeConfiguration = {
    TO_LOGIN: { screen: Login },
    TO_HOME: { screen: Home },
};

const stackNavigatorConfiguration = {
    headerMode: 'screen',
    navigationOptions: {
        header: null,
    }
};

Inside Login屏幕我显示了一个模态,我不能使用react-redux的connect方法。这是完整的错误:

enter image description here

以下是我尝试使用它的方法:

class SignModal extends Component {

}

export default connect()(SignModal);

可能是什么原因?先谢谢你了!

3 个答案:

答案 0 :(得分:2)

模态将存在于当前组件层次结构之外。该模式称为Portal。这意味着它无法访问React上下文,因此无法找到Redux存储。目前,React Native中没有API来解决此问题。您需要明确地将商店作为道具传递。

可能更好的方法是连接具有Modal的组件,并将所需的值作为props传递给内部组件。

答案 1 :(得分:0)

你试过吗

export const mapStateToProps = (state) => {
  return {
    //what you want from the store
  }
} 

然后

export default connect(mapStateToProps)(SignModal);

答案 2 :(得分:0)

这是可能的。将您的模态用作视图组件并创建一个连接的容器组件。

// components/Modal.js

class Modal extends Component {
    render() {
        <Modal />
    }
}

export default Modal
// containers/ModalContainer

import Modal from "../components/Modal"

const mapState = state => ...
const mapDispatch = dispatch => ...

export default connect(mapState, mapDispatch)(Modal)

使用时从“ ../containers/ModalContainer”导入模态。