![](/img/trans.png)
[英]useAsyncStorage custom hook with useState hook in React Native
[英]React Native not recognizing useState hook
渲染错误:(0,_reactNative.usestate) 不是函数。(在'(0,_reactNative.useState)(''),'(0,_reactNative.useState)'未定义
这是我的代码产生的错误。 所有导入都是最新的。 不知道为什么它不能识别 useState。
import React from 'react';
import { View, StyleSheet,TextInput,useEffect,useState } from 'react-native';
import db from 'D:/App development/PRLog/PrLogBeta/database/firestore'
const EnteryModal = props => {
const [numReps,setNumReps] = useState('');
useEffect(() => {
db.collection('Bench').add({reps:{newNum}})
},[]).then(() => {
console.log('Number Added!');
});
return(
<View style={styles.inputStyle}>
<form>
<TextInput
style = {styles.inputStyle}
keyboardType='number-pad'
placeholder={props.RepsOrWeight}
placeholderTextColor = 'white'
textAlign='center'
onChangeText={newNum => setNumReps(newNum)}
defaultValue={numReps}
onSubmitEditing={useEffect(() => {
db.collection('Bench').add({reps:{newNum}})
},[]).then(() => {
console.log('Number Added!');
})}
>
</TextInput>
</form>
</View>
);
};
编辑:代码示例:
根据您问题的片段,您似乎正试图在提交文本输入时触发对数据库的 POST 请求。 这可以在没有 useEffect 的情况下通过简单地将处理程序函数传递给您的文本输入来实现,就像这样。
import React, { useEffect, useState } from 'react'; import { View, StyleSheet,TextInput } from 'react-native'; import db from 'D:/App development/PRLog/PrLogBeta/database/firestore' const EnteryModal = props => { const [numReps,setNumReps] = useState(''); const handleSubmit = async () => { try { await db.collection('Bench').add({reps:{newNum}}); console.log('Number Added!'); } catch (error) { console.log(error) } } return( <View style={styles.inputStyle}> <form> <TextInput style = {styles.inputStyle} keyboardType='number-pad' placeholder={props.RepsOrWeight} placeholderTextColor = 'white' textAlign='center' onChangeText={newNum => setNumReps(newNum)} defaultValue={numReps} onSubmitEditing={handleSubmit} > </TextInput> </form> </View> ); };
使用 useState 和 useEffect 作为反应组件,而不是作为反应原生组件。
如下例所示。
import React, { useEffect, useState } from 'react';
import { View, StyleSheet, TextInput} from 'react-native';
import db from 'D:/App development/PRLog/PrLogBeta/database/firestore'
const EnteryModal = props => {
const [numReps, setNumReps] = useState('');
useEffect(() => {
dataBaseCollection();
console.log("Number Added!");
}, []);
const dataBaseCollection = () => {
db.collection('Bench').add({ reps: { newNum } });
}
return (
<View style={styles.inputStyle}>
<form>
<TextInput
style={styles.inputStyle}
keyboardType='number-pad'
placeholder={props.RepsOrWeight}
placeholderTextColor='white'
textAlign='center'
onChangeText={newNum => setNumReps(newNum)}
defaultValue={numReps}
onSubmitEditing={(event) => {
dataBaseCollection();
}}
>
</TextInput>
</form>
</View>
);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.