【发布时间】:2021-12-01 00:50:15
【问题描述】:
我正在使用 react 和 Firebase,并为幼儿园制作了一个应用。现在,我有一些不应该对父母可见的组件。有没有一种简单的方法可以做到这一点?这是我的第一个应用,尤其是 Firebase 和 react。
我正在考虑检查角色,然后只是一个简单的 if else 语句。我不确定这是否是一个好的逻辑。
更新
我的用户挂钩:
export function useAllUsers() {
const [users, setUsers] = useState([]);
useEffect(() => {
const usersCollected = [];
firebase
.firestore()
.collection("users")
.get()
.then((snapshot) => {
snapshot.forEach((doc) => {
usersCollected.push({
...doc.data(),
uid: doc.id,
});
});
setUsers(usersCollected);
console.log(usersCollected);
});
}, []);
return users;
}
日历:
function DateAndTimePickers() {
const classes = useStyles();
const [ort, setOrt] = useState("");
const [notiz, setNotiz] = useState("");
const [hinweis, setHinweis] = useState("");
const [eintragen, setEintragen] = useState([]);
const [dateandtime, setDateandtime] = useState([]);
function handelDateandTime(e) {
setDateandtime(e.target.value);
}
function handelOrt(e) {
setOrt(e.target.value);
}
function handelNotiz(e) {
setNotiz(e.target.value);
}
function handelHinweis(e) {
setHinweis(e.target.value);
}
function KalenderEintrag() {
db.collection("eintrag")
.doc()
.set({
ort,
notiz,
hinweis,
dateandtime,
})
.then(() => {
setEintragen([...eintragen, { ort, notiz, hinweis, dateandtime }]);
console.log("Documents saved succesfully");
})
.catch((err) => {
console.log(err);
});
}
function fetchKalendareintrag() {
firebase
.firestore()
.collection("eintrag")
.get()
.then((snapshot) => {
let loadedIfnos = snapshot.docs.map((doc) => {
console.log(doc.data());
return doc.data();
});
setEintragen(loadedIfnos);
});
}
useEffect(() => {
fetchKalendareintrag();
}, []);
return (
//hide
<ScrollView style={styles.root}>
<Container>
<TextField
id="datetime-local"
label="Neues Ereigniss"
type="datetime-local"
defaultValue="2021-09-16T10:30"
className={classes.root}
InputLabelProps={{
shrink: true,
}}
onChange={(value) => {
handelDateandTime(value);
}}
/>
</Container>
{/* ORT */}
<Container className={classes.ortContainer}>
<TextField
id="standard-helperText"
label="Ort"
defaultValue="Text"
onChange={(value) => {
handelOrt(value);
}}
/>
</Container>
{/* Hinweis */}
<Container className={classes.ortContainer}>
<TextField
id="standard-helperText"
label="Hinweis"
defaultValue="Text"
onChange={(value) => {
handelHinweis(value);
}}
/>
</Container>
{/* Notizen */}
<Container className={classes.ortContainer}>
<TextField
id="standard-helperText"
label="Notizen"
defaultValue="Text"
onChange={(value) => {
handelNotiz(value);
}}
/>
</Container>
<Container>
<Button onClick={() => KalenderEintrag()} className={classes.btn} variant="outlined">Absenden</Button>
</Container>
//Show
{/* Kalender einträge */}
{/* Kalender einträge */}
{eintragen.map((item) => {
return (
<Card className={classes.card}>
<CardContent>
<Typography
className={classes.title}
color="textSecondary"
gutterBottom
>
{item.ort}
</Typography>
<Typography variant="h5" component="h2">
{item.hinweis}
</Typography>
<Typography className={classes.pos} color="textSecondary">
{item.notiz}
</Typography>
<Typography variant="body2" component="p">
{item.dateandtime}
<br />
</Typography>
</CardContent>
<CardActions>
</CardActions>
</Card>
)
})}
</ScrollView>
);
}
const mapStateToProps = (store) => ({
eintrag: store.userState.currentUser,
});
export default connect(mapStateToProps, null)(DateAndTimePickers);
【问题讨论】:
标签: reactjs firebase react-native