Я работаю над проектом React / Django, и мои элементы ввода формы создаются с использованием пользовательского интерфейса материала.
В моем бэкэнде я использую Django Rest Framework для сериализаторов и API. В моем интерфейсе я использую компоненты ввода material-ui, но больше не заключаю элементы ввода в тег form
, потому что я отправляю свои запросы через ajax, а в фоновом режиме у меня есть Django для обработки сериализации и проверки данных запроса.
Это хороший подход, или я всегда должен заключать элементы ввода в тег form
?
То, как выглядит мой код реакции, выглядит примерно так:
const TestComponent = props => {
const [state, setState] = useState({
input1: ""
})
const testPost = (data,token) =>
new Promise((res,rej) => {
let endpoint = '/test/add/'
let options = {
method: "POST",
headers: {
'Content-Type': 'application/json',
'Authorization': `Token ${token}`
},
body: JSON.stringify(data),
credentials: 'include'
}
fetch(url,options)
.then(res=>res.json)
.then(data=>{res(data)})
.catch(err=>{rej(err})
})
const handleChange_input1 = e => {
setState(prev => ({
...prev,
input1: e.target.value
}))
}
return(
<Grid container>
<Grid item>
<TextField
label="Input 1"
value={state.input1}
onChange={handleChange_input1}
/>
<Button
variant="text"
onClick={e => {
testPost({input1: state.input1},"token123")
}}
>
Submit
</Button>
</Grid>
</Grid>
)
}
export default TestComponent