React - 如何从我的多个输入中获取值并将它们发送到我的输入?
React - How can I get the values from my multiple input and send them to my input?
我正在使用 <autocomplete>
作为输入字段,我正在尝试在我的控制台中记录值以查看我的提交方法是否有效。目前,我无法提交任何内容,只能向我的 axios 实例提交空数据,并且无法处理任何 Traceback 错误。我的后端工作正常,只是努力从我的表单发送 data
。
我只是尝试将 symbol
从输入值字段发送到我的后端,
const inputOptions = [
{ symbol: "ACN", company: "Accenture Plc", sector: "Technology Services"}
];
查看我的可重现代码:
https://codesandbox.io/s/dazzling-lake-jvdyf?file=/src/App.js
{没有 axios 实例}
表格:
<div className={classes.container}>
<Grid>
<form noValidate onSubmit = { handleSubmit(onSubmit) }>
<Controller
render={({ onChange ,...props }) => (
<Autocomplete
{...props}
className={classes.inputBar}
id="stock_list"
name="stock_list"
multiple
options={inputOptions.companies}
filterOptions={filterOptions}
filterSelectedOptions
defaultValue={[]}
onChange={(e, data) => onChange(data)}
getOptionLabel={(option) => option.symbol}
getOptionSelected={(option, value) => option.symbol === value.symbol}
renderOption={(option) =>
{
return (
<>
<span style={{ fontWeight: 500, fontSize: "20px", paddingRight: "1rem" }}>{option.symbol}</span><span style={{ color: "#C6C6C6", fontSize: "24px" }}> | </span><span style={{ paddingLeft: "1rem" }}>{option.company}</span>
</>
)
}}
renderInput={(params) => (
<TextField
{...params}
style={{ alignItems: 'center' }}
id="stock_list"
name="stock_list"
variant="outlined"
label="Companies"
className={classes.inputBar}
/>
)}
/>
)}
name="stock_list"
control={control}
defaultValue={[]}
onChange={([, data]) => data}
/>
<Button
variant="contained"
color="primary"
onClick={handleSubmit}
>
Add Stocks
</Button>
</form>
</Grid>
</div>
我需要将 symbol
值从上面的多输入表单发送到我的 axios 实例。
事实证明,使用 react-hook-form
和 Material UI 很难做到这一点。
编辑:我正在尝试从输入字段中提取值,感谢我能够记录的评论以查看选择了 JSON 的哪些值,但表单未正确链接尚未提交数据,因为它似乎正在向我的后端发送一个空字典。
这是我的 axios 实例。
const onSubmit = (data, e) =>
{
console.log(data);
axiosInstance
.patch(url+ slug + '/', {
stock_list: data.symbol,
})
.then((res) =>
{
console.log(res);
console.log(res.data);
});
};
向提交按钮添加 type="submit"
并删除 onClick
,这些更改将使表单提交功能在单击“添加股票”按钮时被触发
<Button variant="contained" color="primary" type="submit">
Add Stocks
</Button>
我修改了可重现的代码并提出了这个。
https://codesandbox.io/s/wispy-firefly-n0ygq?file=/src/App.js
您现在可以在提交方法中访问选定的符号。
我正在使用 <autocomplete>
作为输入字段,我正在尝试在我的控制台中记录值以查看我的提交方法是否有效。目前,我无法提交任何内容,只能向我的 axios 实例提交空数据,并且无法处理任何 Traceback 错误。我的后端工作正常,只是努力从我的表单发送 data
。
我只是尝试将 symbol
从输入值字段发送到我的后端,
const inputOptions = [
{ symbol: "ACN", company: "Accenture Plc", sector: "Technology Services"}
];
查看我的可重现代码:
https://codesandbox.io/s/dazzling-lake-jvdyf?file=/src/App.js {没有 axios 实例}
表格:
<div className={classes.container}>
<Grid>
<form noValidate onSubmit = { handleSubmit(onSubmit) }>
<Controller
render={({ onChange ,...props }) => (
<Autocomplete
{...props}
className={classes.inputBar}
id="stock_list"
name="stock_list"
multiple
options={inputOptions.companies}
filterOptions={filterOptions}
filterSelectedOptions
defaultValue={[]}
onChange={(e, data) => onChange(data)}
getOptionLabel={(option) => option.symbol}
getOptionSelected={(option, value) => option.symbol === value.symbol}
renderOption={(option) =>
{
return (
<>
<span style={{ fontWeight: 500, fontSize: "20px", paddingRight: "1rem" }}>{option.symbol}</span><span style={{ color: "#C6C6C6", fontSize: "24px" }}> | </span><span style={{ paddingLeft: "1rem" }}>{option.company}</span>
</>
)
}}
renderInput={(params) => (
<TextField
{...params}
style={{ alignItems: 'center' }}
id="stock_list"
name="stock_list"
variant="outlined"
label="Companies"
className={classes.inputBar}
/>
)}
/>
)}
name="stock_list"
control={control}
defaultValue={[]}
onChange={([, data]) => data}
/>
<Button
variant="contained"
color="primary"
onClick={handleSubmit}
>
Add Stocks
</Button>
</form>
</Grid>
</div>
我需要将 symbol
值从上面的多输入表单发送到我的 axios 实例。
事实证明,使用 react-hook-form
和 Material UI 很难做到这一点。
编辑:我正在尝试从输入字段中提取值,感谢我能够记录的评论以查看选择了 JSON 的哪些值,但表单未正确链接尚未提交数据,因为它似乎正在向我的后端发送一个空字典。
这是我的 axios 实例。
const onSubmit = (data, e) =>
{
console.log(data);
axiosInstance
.patch(url+ slug + '/', {
stock_list: data.symbol,
})
.then((res) =>
{
console.log(res);
console.log(res.data);
});
};
向提交按钮添加 type="submit"
并删除 onClick
,这些更改将使表单提交功能在单击“添加股票”按钮时被触发
<Button variant="contained" color="primary" type="submit">
Add Stocks
</Button>
我修改了可重现的代码并提出了这个。
https://codesandbox.io/s/wispy-firefly-n0ygq?file=/src/App.js
您现在可以在提交方法中访问选定的符号。