reactjs - React - 如果 put value = {name} 则无法输入
问题描述
我对 React 很陌生,我试图弄清楚如果我将 value = {address.suburb} 放入我的 TextField 中,为什么我不能输入我的输入:
import React from "react";
import FormControl from "@material-ui/core/FormControl";
import InputLabel from "@material-ui/core/InputLabel";
import Select from "@material-ui/core/Select";
import TextField from "@material-ui/core/TextField";
import Button from "@material-ui/core/Button";
const FlatAddress = (props) => {
const { navigation } = props;
const { address } = props.formData;
const onSubmit = (e) => {
e.preventDefault();
navigation.next();
console.log(address);
};
return (
<form onSubmit={onSubmit}>
<h1>This is flat address page</h1>
<TextField
id="outlined-basic"
variant="outlined"
label="Street number"
value={address.street}
onChange={props.setForm}
name="streetNumber"
margin="normal"
variant="standard"
autoComplete="off"
fullWidth
/>
</form>
);
};
export default FlatAddress;
这是我的另一个组件中的另一个组件:
import React from "react";
import { useForm, useStep } from "react-hooks-helper";
import FlatAddress from "./FlatAddress";
import FlatInfo from "./FlatInfo";
import FlatChecklist from "./FlatChecklist";
const defaultData = {
firstName: "",
lastName: "",
age: 0,
address: {
street: "",
suburb: "",
city: "",
country: "",
},
photo: "",
};
const steps = [{ id: "information" }, { id: "address" }, { id: "photo" }];
const Flat = (props) => {
const { user } = props;
const [formData, setForm] = useForm(defaultData);
const { step, navigation } = useStep({
steps,
initialStep: 0,
});
const prop = { formData, setForm, navigation };
switch (step.id) {
case "information":
return <FlatInfo {...prop} user={user} updateUser={props.updateUser} />;
case "address":
return (
<FlatAddress {...prop} user={user} updateUser={props.updateUser} />
);
case "photo":
return (
<FlatChecklist {...prop} user={user} updateUser={props.updateUser} />
);
}
return <h1>Flat Sign Up</h1>;
};
export default Flat;
我尝试了另一个组件(TextField 也是如此)并且它工作正常,但是在这个组件中它不允许我输入任何内容。
解决方案
似乎您在 TextField 上输入了错误的名称。你命名它streetNumber
,但值是address.street
变量。
通过阅读 react-hooks-helper 文档,输入的名称似乎必须与变量的名称相同
尝试这个:
<TextField
id="outlined-basic"
variant="outlined"
label="Street number" value = {address.street} onChange = {props.setForm}
name="adress.street" //changed name to match value variable
margin="normal"
variant="standard"
autoComplete="off"
fullWidth
/>
推荐阅读
- asp-classic - ASP Classic Server.GetLastError() 方法在 IIS10 自定义错误页面中返回 Null
- django - 如何从我的项目中卸载 dj-stripe?
- xcode - 有没有人成功地将 Blender 2.8 中的动画导入 Xcode?
- unix - 如何将 csplit 实现到 makefile 中?
- c++ - 我在使用 fwrite() 和 fread() 时遇到了一些问题
- cypress - .text() 方法返回 [object Object] 而不是 cypress 测试中的文本
- spring-boot - 将数据发送到 Spring Batch Item Reader(或 Tasklet)
- c# - 是否可以使用 Web 托管服务中的 Unity 可寻址资产?
- javascript - 为什么 Model.find 不在变量中存储数据?
- python - 按多列在熊猫中排序而不扭曲索引