【发布时间】:2021-07-11 11:34:09
【问题描述】:
我想知道如何使用 react typescript 创建评论部分,我希望用户输入名称和评论,然后将其发送到我的 firebase 项目。我也想如果制作的cmets可以显示在评论表的正下方,下面的代码就是我所能做的,请问我该如何处理
import React, { EventHandler, FormEventHandler, useState, FC } from 'react'
import { Box, Button, Grid, TextField } from '@material-ui/core';
import axios from "axios";
interface FormData {
user: string;
comment: string;
}
const Comment: FC<FormData> = ({}) => {
const [formData, setFormData] = useState({ user: "", comment: ""})
const handleChange = (e) => {
const { value, name } = e.target;
setFormData({ ...formData, [name]: value })
console.log(formData)
}
const handleSubmit = async (e) => {
e.preventDefault();
const response = await axios.post('/api/comments/index', formData);
}
return (
<Box component="form"
my={3}
>
<Grid container
direction="row"
justify="center"
alignItems="flex-end"
spacing={2}
>
<Grid item xs={6}>
<TextField id="outlined-basic" label="Firstname" variant="outlined" name="firstname" onChange={handleChange} />
</Grid>
<Grid item xs={6}>
<TextField
id="filled-multiline-static"
label="Comment"
multiline
rows={4}
defaultValue="Share with your artist "
variant="filled" onChange={handleChange}/>
</Grid>
<Box mt={5} display="flex" justifyContent="center">
<Box width="70%">
<Button type="submit" variant="contained" color="primary" fullWidth onClick={handleSubmit}>Add Comment</Button>
</Box>
</Box>
</Grid>
</Box>
)
}
export default Comment
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
【问题讨论】:
-
useState()返回一个包含 2 个元素的数组,第一个是值,第二个是它的 setter。您将第一个用作函数。 -
const [SetPlayingCurrentSong] = useState() const [playingCurrentSong] = useState()是什么意思?
标签: reactjs typescript firebase