Я только что купил курс React Native от Udemy, автором курса является Стивен Гридер. Так что, в основном, я печатаю свой код с ним, когда он печатает. Но, к сожалению, я застрял в ошибке в процессе регистрации приложения отслеживания. Всякий раз, когда я нажимаю кнопку «Зарегистрироваться» после ввода адреса электронной почты и пароля, на моем экране отображается эта ошибка. Пожалуйста, проверьте мой код, если есть какая-либо ошибка, поэтому, пожалуйста, дайте мне знать.
Ошибка
Регистрация не является функцией. (При регистрации ({электронная почта: электронная почта, пароль: пароль}) ',' регистрация 'не определена);
Eror ScreenShot
RegistrationScreen.js
import React, { useState, useContext } from 'react';
import { View, StyleSheet } from 'react-native';
import { Text, Button, Input } from 'react-native-elements';
import Spacer from '../components/Spacer';
import { Context as AuthContext } from '../context/AuthContext';
const SignupScreen = ({ navigation }) => {
const { state, signup } = useContext(AuthContext);
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
return (
<View style={styles.container}>
<Text h3 style={styles.heading}>Sign Up for Tracker</Text>
<Input
label='Email'
value={email}
onChangeText={setEmail}
autoCapitalize="none"
autoCorrect={false}
/>
<Spacer />
<Input
secureTextEntry
label='Password'
value={password}
onChangeText={setPassword}
autoCapitalize="none"
autoCorrect={false}
/>
<Spacer />
<Spacer>
<Button
title="Sign Up"
onPress={() => signup({ email, password })}
/>
</Spacer>
</View>
);
};
SignupScreen.navigationOptions = () => {
return {
header: null
};
};
export default SignupScreen;
AutoContext.js
import createDataContext from "./createDataContext";
import trackerApi from '../api/tracker';
const authReducer = (state, action) => {
switch (action.type) {
default:
return state;
}
};
const signup = dispatch => {
return async ({ email, password }) => {
try {
const response = await trackerApi.post('/signup', { email, password });
console.log(response.data);
} catch (err) {
console.log(err.message);
}
};
};
const signin = dispatch => {
return ({ email, password }) => {
};
};
const signout = dispatch => {
return ({ email, password }) => {
};
};
export const { Provider, Context } = createDataContext(
authReducer,
{ signin, signout, signup },
{ isSignedIn: false }
);
createDataContext.js
import React, { useReducer } from 'react';
export default (reducer, actions, defaultValue) => {
const Context = React.createContext();
const Provider = ({ children }) => {
const [state, dispatch] = useReducer(reducer, defaultValue);
const boundActions = {};
for (let key in boundActions) {
boundActions[key] = actions[key](dispatch);
}
return (
<Context.Provider value={{ state, ...boundActions }}>
{children}
</Context.Provider>
);
};
return { Context, Provider };
};
App.js
import React from 'react';
import { createAppContainer, createSwitchNavigator } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import { createBottomTabNavigator } from 'react-navigation-tabs';
import SignupScreen from './src/screens/SignupScreen';
import SigninScreen from './src/screens/SigninScreen';
import TrackListScreen from './src/screens/TrackListScreen';
import TrackDetailScreen from './src/screens/TrackDetailScreen';
import TrackCreateScreen from './src/screens/TrackCreateScreen';
import AccountScreen from './src/screens/AccountScreen';
import { Provider as AuthProvider } from './src/context/AuthContext';
const switchNavigator = createSwitchNavigator({
loginFlow: createStackNavigator({
Signup: SignupScreen,
Signin: SigninScreen
}),
mainFlow: createBottomTabNavigator({
trackListFlow: createStackNavigator({
TrackList: TrackListScreen,
TrackDetail: TrackDetailScreen
}),
TrackCreate: TrackCreateScreen,
Account: AccountScreen
})
});
const App = createAppContainer(switchNavigator);
export default () => {
return (
<AuthProvider>
<App />
</AuthProvider>
);
}