【发布时间】:2020-11-09 03:22:45
【问题描述】:
我正在尝试使用事件 onChange 访问 Select 的值,以便我可以更新另一个 Select,但 Select 不会触发 onChange。你可以在codesandbox找到代码:
import React, { useState } from "react";
import ReactDOM from "react-dom";
import { useForm, Controller } from "react-hook-form";
import {
FormControl,
Select,
MenuItem,
InputLabel,
FormHelperText
} from "@material-ui/core";
function App() {
const { handleSubmit, errors, control } = useForm();
const onSubmit = (data) => {
console.log(data);
};
const [test, setTest] = useState(0);
const handleChange = (stateFunction, event) => {
if (event) {
console.log(event);
setTest(event.target.value);
}
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<FormControl variant="outlined" required>
<InputLabel>Test</InputLabel>
<Controller
as={
<Select width={"300px"} onChange={handleChange(setTest, this)}>
<MenuItem value="1">One</MenuItem>
<MenuItem value="2">Two</MenuItem>
<MenuItem value="3">Three</MenuItem>
</Select>
}
control={control}
defaultValue="1"
name="brandId"
rules={{ required: "Marca es requerido" }}
/>
<FormHelperText error={true}>
{errors.brand && errors.brand.message}
</FormHelperText>
</FormControl>
<input type="submit" />
</form>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
知道问题出在哪里吗?
谢谢
【问题讨论】:
-
我不确定,但是一旦将 Select 部分移到 Controller 之外,它就可以工作了。
-
我认为你应该关注这个答案stackoverflow.com/a/63246774/1435722
-
@GuruparanGiritharan 谢谢老兄,说清楚了。
标签: reactjs material-ui