【发布时间】:2020-05-09 23:51:39
【问题描述】:
我有一个登录设置,可与我的 api 一起使用获取并在完成时再次将其设置为 false,但我无法在与获取 api 的文件相同的 js 中声明活动指示器
这是我的登录表单组件,名为 AuthForm
export default function AuthForm ({ errorMessage, onSubmit }) {
const [vCellphone, setvCellphone] = useState('');
const [vPassword, setvPassword] = useState('');
const [secureTextEntry, setSecureTextEntry] = useState(true);
onPassPress = () => {
setSecureTextEntry(!secureTextEntry);
}
handleChange = e => {
const { value, name } = e.target;
this.setState({ [name]: value });
};
return (
<View style={styles.container}>
<Image style={styles.logo} source={require('../assets/Logotipo-All.png')} />
<Text style={styles.textIniciar}>Iniciar sesión</Text>
<Text style={styles.textIniciar}></Text>
<View style={styles.inputContainer}>
<TextInput style={styles.inputs}
placeholder="Teléfono"
underlineColorAndroid='transparent'
onChangeText={newvCellphone => setvCellphone(newvCellphone)}
keyboardType={'numeric'}
value={vCellphone}
autoCorrect={false}
autoCompleteType = "off"
required
/>
</View>
<View style={styles.inputContainer}>
<TextInput style={styles.inputs}
placeholder="Contraseña"
secureTextEntry={secureTextEntry}
underlineColorAndroid='transparent'
onChangeText={newvPassword => setvPassword(newvPassword)}
value={vPassword}
autoCorrect={false}
/>
<TouchableOpacity onPress={this.onPassPress}>
<Image style={styles.inputIcon} source={require('../assets/Visualización.png')}/>
</TouchableOpacity>
</View>
<TouchableOpacity style={[styles.buttonContainer, styles.loginButton]}
onPress={() => onSubmit({ vCellphone, vPassword })}>
<Text style={styles.loginText}>INGRESAR</Text>
</TouchableOpacity>
</View>
);
};
这是我的 api 调用代码,称为 AuthContext
const login = dispatch => async ({ vCellphone, vPassword }) => {
const response = await ForceApi.post('/LoginController.php', { vCellphone, vPassword });
const Validar = response.data.error;
await AsyncStorage.setItem('id', response.data.id);
dispatch({ type: 'login', payload: response.data.id});
if(Validar == false ){
navigate('Panel');
}
};
export const {Provider, Context} = createDataContext(
authReducer,
{ login, logout, clearErrorMessage, tryLocalSignin, guardar,},
{id:null, vSolicitudeId:null,errorMessage: ''}, []
);
这是调用 AuthForm 的视图
import { Context } from '../context/AuthContext';
import AuthForm from '../components/AuthForm';
import { NavigationEvents } from 'react-navigation';
const IniciarSesion = () => {
const { state, login, clearErrorMessage} = useContext(Context);
onPassPress = () => {
this.setState({
secureTextEntry: !this.state.secureTextEntry
});
}
return (
<View style={styles.container}>
<NavigationEvents
onWillBlur = {clearErrorMessage}
/>
<AuthForm
errorMessage = {state.errorMessage}
onSubmit = {login}
/>
</View>
);
};
任何帮助将不胜感激
【问题讨论】:
-
问题解决了???
标签: reactjs react-native