На главном экране у меня есть функция, которая получает «тип пользователя: Paid / UnPaid» из API,
Так что на этом экране у меня есть ящик, внутри которого пользователь может перемещаться для входа после входа в систему я перехожу к нему обратно на главный экран
, но в этом случае главный экран уже подключен, то есть функция userIsPaid уже вызывается в первый раз, поэтому я хочу перепроверить, если это учетная запись платная или нет снова "вызвать userisPaid ()"?
, потому что в нижней вкладке я отображаю новую вкладку условно на основе типа пользователя, и она не работает, потому что я не перепроверяю тип пользователя.
Код
Root. js
const BottomTabStack = createBottomTabNavigator();
function BottomTabs() {
const isPaid = useSelector(state => state.userIsPaid.isPaid);
...
<BottomTabStack.Navigator
lazy={false}
tabBar={props => <TabBar {...props} />}
>
...
{isPaid && (
<BottomTabStack.Screen
name="Library"
component={YourLibraryStackScreen}
/>
)}
</BottomTabStack.Navigator>
}
Дом. js
userIsPaid = async () => {
try {
const {token} = this.props;
let AuthStr = `Bearer ${token}`;
let response = await API.get('/profile', {
headers: {Authorization: AuthStr},
});
const {account} = response.data.data;
console.log('account??', account);
account === 'unpaid'
? this.props.isUserPaid(false)
: this.props.isUserPaid(true);
} catch (err) {
console.log(err);
}
};
componentDidMount() {
const {token} = this.props;
token && this.userIsPaid();
}
Вход. js
sendData = async data => {
// this.setState({loading: true});
try {
let response = await API.post('/google', data);
// this.setState({loading: false});
let {
data: {
data: {
response: {token},
},
},
} = response;
this.props.dispatch(saveToken(token));
this.props.dispatch(isLoginFunc(true));
this.props.navigation.push('BottomTabNavigator'); // bottom navigation 'home,about....'
} catch (err) {
console.log(err);
}
};