【问题标题】:Invariant error in react native cannot find store反应原生中的不变错误找不到商店
【发布时间】:2018-04-29 13:49:45
【问题描述】:

我一直在为我已经工作了几天的 react native 应用程序设置 redux。我不断收到不变的错误,无法在上下文或道具中找到存储。我已经在谷歌上搜索了几天并尝试了多种不同的解决方案,但我似乎无法修复此错误。

商店:

`import React from 'react';
import { render } from 'react-dom'
import { Provider } from 'react-redux';
import { createStore,applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import combineReducers from "./reducers/combineReducers";
import App from './App'

const store = createStore(combineReducers ,applyMiddleware(thunk));

render(
    <Provider store={store}>
        <App/>
    </Provider>,
    document.getElementById('App')
);`

应用组件

import React, {Component} from 'react';
import {StyleSheet, View} from 'react-native';
import MainMenu from "./Components/MainMenu";
import {Root} from "native-base";
import {connect} from 'react-redux';
import {Font, AppLoading} from 'expo';

export class App extends Component {
    state = {
        loadingFont: true,
        testText:'Test'
    };

        async componentDidMount() {
            try {
                await Font.loadAsync({
                    'pixel-font': require('./assets/fonts/Roboto-Medium.ttf'),
                });
                this.setState({loadingFont: false});

            }catch (e) {
                console.log(e)
            }
        }


    render() {
        if (this.state.loadingFont) {
            return (
                <Root>
                    <AppLoading/>
                </Root>
            );
        }
        return (
            <View style={styles.container}>
                <MainMenu/>
            </View>
        );
    }
}
const mapStateToProps = state => {
    return {productions:state.productions}
};

export default connect(mapStateToProps)(App);

const styles = StyleSheet.create({
    container: {
        flex:1,
        backgroundColor:'#fff',
        justifyContent: 'center',
    },
});

我知道这个问题已经被问了好几次了,但我觉得我已经浏览了所有的答案,但都没有找到有用的答案。在这一点上,我知道我在某个地方犯了一个错误,但是在看了几天之后,我有点盲目地无法自己找到任何解决方案。

【问题讨论】:

  • 你能发布你的完整代码吗?或者可以在线制作世博小吃。

标签: reactjs react-native mobile redux expo


【解决方案1】:

从您的商店文件中导出商店并将其导入您的 App.js 文件。 Provider 也应该在你的 App.js 文件中,包裹在 &lt;Root&gt; 周围。你在 react-native 工作吗?如果是这样,你不会使用 React-Dom,Expo 会加载 App.js 文件。

【讨论】:

  • 你让我走上了正确的道路。 Expo 默认将 App.js 视为根目录,因此如果您使用 App.js 呈现初始主菜单并将您的商店放在另一个未命名为 App 的文件中,它将无法正常工作。我通过将 App js 重命名为 Main 来修复它,然后我在 Main 周围为 App 提供者命名了商店文件,它可以工作。理论上,您可以通过将 expo 的应用程序入口文件中的导入更改为您想要的任何内容来修复它,但是使用在为商店创建 react 本机应用程序时创建的原始 App.js 更容易。谢谢!
猜你喜欢
  • 2019-08-21
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多