Вопрос по react-native, react-navigation, redux, redux-thunk, react-native-router-flux – Ты мой герой

3

отаю над собственным приложением реакции, используя следующие основные зависимости:

реагировать роднойреагировать на родной поток маршрутизаторареагировать громЭкспо

Я работал с этим package.json:

"dependencies": {
    "expo": "23.0.4",
    "humps": "^2.0.0",
    "install": "^0.10.1",
    "lodash": "^4.17.4",
    "native-base": "^2.3.5",
    "react": "16.0.0",
    "react-native": "0.50.4",
    "react-native-extend-indicator": "^0.1.2",
    "react-native-keyboard-aware-scroll-view": "^0.4.2",
    "react-native-maps": "^0.19.0",
    "react-native-maps-directions": "^1.3.0",
    "react-native-modal-datetime-picker": "^4.13.0",
    "react-native-qrcode": "^0.2.6",
    "react-native-router-flux": "4.0.0-beta.24",
    "react-native-svg-uri": "^1.2.3",
    "react-native-swiper": "^1.5.13",
    "react-native-vector-icons": "^4.4.2",
    "react-navigation-redux-debouncer": "^0.0.2",
    "react-redux": "^5.0.6",
    "redux": "^3.7.2",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.2.0",
    "swagger-client": "2.1.32"
  }

Приложение использует expo, поэтому я устанавливаю зависимости, используя:

пряжа установить

а затем запустите приложение

начало пряжи

Я работал нормально, так как хотел добавить новую зависимость, поэтому я удалил папку node_modules и файл yarn.lock, добавил новую зависимость и снова выполнил установку yarn.

После этого я получаю эту ошибку при открытии приложения:

Ошибка типа: undefined не является функцией (оценка addListener)

это связано с реакции-навигацией, но я использую реагирующий-маршрутизатор-поток 4.0.0-бета.24, который использует внутреннюю реакцию-навигацию ^ 1.0.0-бета.19.

Недавно я заметил, что у людей, использующих реагирующую навигацию, возникают некоторые проблемы с этим (https://github.com/react-navigation/react-navigation/issues/3416) но используя версию beta.28.

Если я вернусь к предыдущей папке node_modules (из корзины), мое приложение будет работать хорошо, так что ... вероятно, дело в том, что некоторая зависимость с^ символ моего package.json больше не совместим .. может быть спасибо или отреагировать на собственный поток маршрутизатора с моей верной версией.

есть идеи?

Вот часть кода, когда я использую промежуточное программное обеспечение реагировать:

import {applyMiddleware, compose, createStore} from 'redux';
import thunkMiddleware from 'redux-thunk';
import {createLogger} from 'redux-logger';
import getRootReducer from "../reducers/index";
import navigationDebouncer from 'react-navigation-redux-debouncer';
import {restApi} from "../lib/restApi";

const loggerMiddleware = createLogger({ predicate: (getState, action) => __DEV__  });

export default function getStore(initialState) {
    const enhancer = compose(
        applyMiddleware(
            thunkMiddleware.withExtraArgument(restApi),
            navigationDebouncer(600),
            loggerMiddleware
        ),
    );
    return createStore(
        getRootReducer,
        initialState,
        enhancer
    );
}

и вот основное приложение:

import React, {Component} from 'react';
import {Provider} from 'react-redux'
import getStore from './src/store/configureStore'
import {StatusBar} from 'react-native'
import AppNavigation from './src/navigation';

const Store = getStore();

export default class App extends Component {

    constructor(props) {
        super(props);
    }

    async componentWillMount() {
        await Expo.Font.loadAsync({
            'Ionicons': require('native-base/Fonts/Ionicons.ttf'),
        });
    }

    render() {
        StatusBar.setHidden(true);
        return (
            <Provider store={Store}>
                <AppNavigation/>
            </Provider>
        );
    }
}

РЕДАКТИРОВАТЬ: я обнаружил, что теперь response-native-router-flux использует 1.0.0 response-navigation (новый стабильный выпуск), и после того, как он использовал версию 1.0.0-beta.27 .. приложение работает с бета-версией. версия, но есть эта проблема с версией 1.0.0 ... так что я понимаю, что вы используете фиксированную версию реагирующей навигации в вашем последнем выпуске (1.0.0-22.beta)

поэтому вопрос заключается в том, есть ли способ по-прежнему использовать RNRF 4.0.0-beta.24 НО, используя фиксированную версию (например, 1.0.0-27.beta)?

я имею в виду, я думаю, это не значит, что 4.0.0-бета.24 использует ^ 1.0.0-бета19 (что приведет к установке последней версии 1.0.0) и более новую версию, такую ​​как 4.0.0-бета .28 использует исправленную нижнюю версию (1.0.0-бета.22)

Ваш Ответ

1   ответ
8

после некоторых исследований и тестов, я хочу ответить на мой вопрос.

Проблема была среагировать-навигации зависимость, которая обрабатывает внутреннереагирует-нативный-маршрутизатор-поток

Зависимости:

react-native-router-flux beta.0 - beta.24 -> react-navigation ^1.0.0-beta.19
react-native-router-flux beta.25 - beta.28 -> react-navigation 1.0.0-beta.22

большая разница здесь в том, что версии от 0 до бета24 использует^

... в чем проблема с этим?

при установке зависимостей бета-24 будет искать самую последнюю версию реактив-навигацию начиная с 1.0.0-бета.19, эта версия является последней стабильной версией 1.0.0 реактив-навигации (библиотека больше не находится в бета-версии).

response-native-router-flux не обеспечивает поддержку этой зависимости, Он также не поддерживает других зависимостей, поэтому они просто1.0.0-beta22 реактивно-навигационная зависимость исправлено в последних выпусках package.json (начиная с бета-версии 26).

возможно, они это исправят, так как существует множество приложений, использующих приставку или другие библиотеки, которые не имеют хорошего взаимодействия с Reaction-native-router-flux.

Так что пока ..решение для пользователей Redux стоит выбрать бета-версию, а для тех, кто не использует redux, вероятно, бета27 и бета28 подойдут.

Вот обсуждение:https://github.com/aksonov/react-native-router-flux/issues/2865

Вот еще одна связанная проблема:https://github.com/aksonov/react-native-router-flux/issues/2799

Ты мой герой Matthew Ratzloff

Похожие вопросы