У меня есть массив флажков, и я хочу передать, какие флажки были выбраны для форм Netlify.
В настоящее время передается только одно из значений, вместо этого я хочу, чтобы все они были правильно переданы и отформатированы (запятая между ними).
Мой флажок выглядит следующим образом, он проходит по данным извлекается из массива безголовой CMS и отображает все флажки как следует
<fieldset>
<legend>Inquery type</legend>
{formData.radioButtons.map((node, index) => (
<>
<p>
<label key={index}>
<input
type="checkbox"
id={("inqueryType", index)}
name="inqueryType"
ref={register()}
value={node}
onChange={handleChange}
key={(node, "checbox")}
/>
{node}
</label>
</p>
</>
))}
</fieldset>
Моя функция handleChange выглядит следующим образом
const handleChange = e => {
if (e.target.type === "checkbox" && !e.target.checked) {
setState(prev => ({ ...prev, [e.target.name]: e.target.value }))
} else {
setState({ ...state, [e.target.name]: e.target.value })
}
}
Я подозреваю, что моя ошибка в моем методе handleChange , но я не смог понять, почему он хранит только одно значение вместо всех. Любые идеи?
Мой onSubmit выглядит следующим образом
const onSubmit = (data, e) => {
e.preventDefault()
fetch("/", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: encode({
"form-name": "contactGudcForm",
...state,
}),
})
.then(response => {
setFeedbackMsg(`Thanks for reaching out. I'll get back to you soon.`)
reset()
console.log(response)
})
.catch(error => {
setFeedbackMsg(
"Oops, something went wrong. The form could not be submitted."
)
console.log(error)
})
}
, а моя функция encude, бесстыдно украденная из StackOverflow, выглядит следующим образом
function encode(data) {
return Object.keys(data)
.map(key => encodeURIComponent(key) + "=" + encodeURIComponent(data[key]))
.join("&")
}
Это проект Gatsby, развертываемый в Netlify с использованием стандартные формы Netlify