Я пытаюсь изучить основы редукса и прохожу курс удэми. Я сталкиваюсь с той же проблемой, что и в приведенном ниже сообщении, но я несколько раз просматривал свой код и не вижу никаких синтаксических ошибок. Я надеялся, что кто-то может указать, где я тукнул код.
Регистрация не является функцией, регистрация не определена ошибка React Native
регистрация не является функцией. (В регистрации ({userName: userName, password: password}) ',' регистрация 'не определена);
import React, {useState, useContext} from 'react';
import {StyleSheet, View, TextInput, Button, TouchableOpacity, Text } from 'react-native'
import config from '../config';
import {Context as AuthContext} from '../context/AuthContext';
const LoginForm = ({navigation}) => {
const { state, signup } = useContext(AuthContext);
const [userName, setUserName] = useState('');
const [password, setPassword] = useState('');
const [error, setError] = useState('');
const [loggedIn, setLoggedIn] = useState(false);
loginSuccess = () => {
setLoggedIn(true);
navigation.navigate('mainFlow');
};
loginFailed = () => {
setError('Login failure. Please try again.');
};
return (
<View style = {styles.container}>
<TextInput placeholder = "username or email"
placeholderTextColor= "rgba(255, 255, 255, 0.7)"
returnKeyType="next"
keyboardType="email-address"
autoCapitalize="none"
autoCorrect={false}
value={userName}
onChangeText={setUserName}
style ={styles.input}/>
<TextInput placeholder = "password"
placeholderTextColor= "rgba(255, 255, 255, 0.7)"
returnKeyType="go"
secureTextEntry
value={password}
onChangeText= {setPassword}
style = {styles.input}/>
<TouchableOpacity style = {styles.buttonContainer} onPress={()=> signup({userName, password})}>
<Text style={styles.buttonText}>
LOGIN
</Text>
</TouchableOpacity>
</View>
);
};
const styles = StyleSheet.create({
container: {
padding: 20
},
input: {
height: 40,
backgroundColor: 'rgba(255, 255, 255, 0.2)',
marginBottom: 15,
color: '#FFF',
paddingHorizontal: 10
},
buttonContainer: {
backgroundColor: '#2980b9',
paddingVertical: 15
},
buttonText: {
textAlign: 'center',
color: '#FFFFFF',
fontWeight: '700'
},
error : {
fontSize: 20,
color: 'red',
fontFamily: 'Baskerville'
}
});
export default LoginForm;
Примечание: я предполагаю, что это опечатка, потому что мой код такой же, какучебник и вышеупомянутая связанная проблема (кроме ее опечатки.
AuthContext. js Примечание: config - это мой файл аутентификации для Firebase. Я попытался удалить все в signup
и только console.log, но яневозможно войти в функцию.
import CreateDataContext from './CreateDataContext';
import config from '../config';
const authReducer = (state, action) => {
switch(action.type){
default:
console.log('switch values: ' + state);
return state;
};
};
const signup = (dispatch) => {
return async ({userName, password})=>{
try{
// make an api request to sign up with email and password
const user = {
userName: userName,
password: password,
};
const response = config.loginViaRedux(user);
// if sign up was successful , we want to modify our state telling it the user was authenticated
console.log('response: ' + response.data);
} catch(e){
// if sign up fails, we need to show an error message
console.log('response error: ' + e.message);
}
};
};
const signIn = (dispatch) => {
return({email, password})=>{
};
};
const signOut = (dispatch) => {
return({email, password})=>{
};
};
export const {Provider, Context} = CreateDataContext (
authReducer,
{},
{isSignedIn: false}
);