У меня есть приложение "Musi c App" для пользователей буксировки, типа "Гость, зарегистрированный пользователь"
У меня есть нижний навигатор для тех, когда Гость открывает мое приложение, я хочу сделать только 4 нижних вкладки "Домой, просмотр, поиск, радио".
, но когда пользователь входит / регистрируется, я хочу отобразить 5 вкладок ранее вкладок плюс вкладка "Библиотека".
SO
Я отправляю действие, когда пользователь register \ login , и изменяю состояние isLogin с false на true и выполняю некоторые действия, такие как добавление некоторых других данных в мой ящик, и оно появляется хорошо,
Я хочу получить доступ к избыточному хранилищу внутри файла реакции-навигации " Вкладки. js",
Я хочу состояние доступа из mapStateToProps
, но я не могу получить доступ к this.props.isLogin
из компонента, не относящегося к классу!
Так что я понятия не имею, как мне это сделать, если я не использую компонент Class!
Итак, есть ли способ получить доступ к хранилищу с помощью «connect HO C» внутри вкладок. js файл?
код
вкладок. * 106 6 * file
import {connect} from 'react-redux';
import {store} from '../redux/store/store';
const LoginTabs = createBottomTabNavigator({....}); // For user '5 tabs'
const notLoginTabs = createBottomTabNavigator({....}); // For Guest '4 tabs'
const App = this.props.isLogin ? LoginTabs : notLoginTabs; // Not work i know :P
export default (createAppContainer(App));
EDIT For Drew Reese Ответ
Когда я пытаюсь сделать это таким образом, я получаю сообщение об ошибке
const mapStateToProps = state => {
console.log('state', state);
return {
isLogin: state.user.isLogin,
};
};
const App = ({isLogin, ...props}) =>
isLogin ? <LoginTabs {...props} /> : <NotLoginTabs {...props} />;
const Root = createAppContainer(App);
export default connect(mapStateToProps)(Root);
Ошибка message
В этом навигаторе есть как навигация, так и реквизиты контейнера, поэтому неясно, должен ли он владеть своим собственным состоянием. Удалите реквизиты: «isLogin, dispatch», если навигатор должен получить свое состояние из навигационной стойки. Если навигатор должен поддерживать свое собственное состояние, не передавайте навигационную опору.
То, что я пробовал
Я положил все стеки
"Ящик, Стеки, BottomTabs "
внутри одного файла" Компонент класса ", и это работает, но, как сказал @Drew, это не очень хорошая идея сделать это таким образом:)
Вот файл , если вы хотите его увидеть