在尝试将数据从子组件传递到父组件时出现错误 props.onSubmitForm is not a function
am getting an error props.onSubmitForm is not a function while trying to pass data from child to parent component in react
我正在尝试以两种状态存储输入数据;触发 onChange 事件时的姓名和年龄。
此后,我尝试在触发表单的 onSubmit 事件时将存储的数据传递到一个级别。
我意识到当提交表单并且现在是时候向上传递数据时,我收到错误消息“props.onSubmitForm 不是函数”。
我注意到这是一个常见错误,但我已尝试比较答案和代码但无济于事。
这是带有表单的子组件。
const UserDetails = (props) => {
const [name, setName] = useState("");
const [age, setAge] = useState("");
const submittedFormhandler = (event) => {
event.preventDefault();
let userDetails = {
name: name,
age: age
};
props.onSubmitForm(userDetails);
};
const getNameHandler = (event) => {
return setName(event.target.value);
};
const getAgeHandler = (event) => {
return setAge(event.target.value);
};
return (
<form onSubmit={submittedFormhandler}>
<div>
<label htmlFor="name">User name</label>
<input type="text" name="name" id="" onChange={getNameHandler} />
</div>
<div>
<label htmlFor="age">Age</label>
<input type="number" name="age" id="" onChange={getAgeHandler} />
</div>
<button type="submit">Add User</button>
</form>
);
};
export default UserDetails;
这里是父组件
import UserDetails from "../UserDetails";
const DisplayDetails = () => {
const submittedDataHandler = (inputData) => {
return console.log(inputData);
};
return <UserDetails onSubmitForm={submittedDataHandler} />;
};
export default DisplayDetails;
您的代码运行得非常好,但我想那是因为您使用了错误的组件
应该是DisplayDetails
不是UserDetails
- 这个很好用:
const DisplayDetails = () => {
const submittedDataHandler = (inputData) => {
return console.log(inputData);
};
return <UserDetails onSubmitForm={submittedDataHandler} />;
};
const UserDetails = (props) => {
const [name, setName] = React.useState("");
const [age, setAge] = React.useState("");
const submittedFormhandler = (event) => {
event.preventDefault();
let userDetails = {
name: name,
age: age
};
props.onSubmitForm(userDetails);
};
const getNameHandler = (event) => {
return setName(event.target.value);
};
const getAgeHandler = (event) => {
return setAge(event.target.value);
};
return (
<form onSubmit={submittedFormhandler}>
<div>
<label htmlFor="name">User name</label>
<input type="text" name="name" id="" onChange={getNameHandler} />
</div>
<div>
<label htmlFor="age">Age</label>
<input type="number" name="age" id="" onChange={getAgeHandler} />
</div>
<button type="submit">Add User</button>
</form>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<DisplayDetails />, rootElement); // <-- RIGHT COMPONENT!!!
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>
<div id="root"></div>
- 这一个抛出像你这样的错误:
const DisplayDetails = () => {
const submittedDataHandler = (inputData) => {
return console.log(inputData);
};
return <UserDetails onSubmitForm={submittedDataHandler} />;
};
const UserDetails = (props) => {
const [name, setName] = React.useState("");
const [age, setAge] = React.useState("");
const submittedFormhandler = (event) => {
event.preventDefault();
let userDetails = {
name: name,
age: age
};
props.onSubmitForm(userDetails);
};
const getNameHandler = (event) => {
return setName(event.target.value);
};
const getAgeHandler = (event) => {
return setAge(event.target.value);
};
return (
<form onSubmit={submittedFormhandler}>
<div>
<label htmlFor="name">User name</label>
<input type="text" name="name" id="" onChange={getNameHandler} />
</div>
<div>
<label htmlFor="age">Age</label>
<input type="number" name="age" id="" onChange={getAgeHandler} />
</div>
<button type="submit">Add User</button>
</form>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<UserDetails />, rootElement); // <-- WRONG COMPONENT HERE!!!
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>
<div id="root"></div>
您的代码版本错误,应该是 DisplayDetails
:
我正在尝试以两种状态存储输入数据;触发 onChange 事件时的姓名和年龄。
此后,我尝试在触发表单的 onSubmit 事件时将存储的数据传递到一个级别。
我意识到当提交表单并且现在是时候向上传递数据时,我收到错误消息“props.onSubmitForm 不是函数”。
我注意到这是一个常见错误,但我已尝试比较答案和代码但无济于事。
这是带有表单的子组件。
const UserDetails = (props) => {
const [name, setName] = useState("");
const [age, setAge] = useState("");
const submittedFormhandler = (event) => {
event.preventDefault();
let userDetails = {
name: name,
age: age
};
props.onSubmitForm(userDetails);
};
const getNameHandler = (event) => {
return setName(event.target.value);
};
const getAgeHandler = (event) => {
return setAge(event.target.value);
};
return (
<form onSubmit={submittedFormhandler}>
<div>
<label htmlFor="name">User name</label>
<input type="text" name="name" id="" onChange={getNameHandler} />
</div>
<div>
<label htmlFor="age">Age</label>
<input type="number" name="age" id="" onChange={getAgeHandler} />
</div>
<button type="submit">Add User</button>
</form>
);
};
export default UserDetails;
这里是父组件
import UserDetails from "../UserDetails";
const DisplayDetails = () => {
const submittedDataHandler = (inputData) => {
return console.log(inputData);
};
return <UserDetails onSubmitForm={submittedDataHandler} />;
};
export default DisplayDetails;
您的代码运行得非常好,但我想那是因为您使用了错误的组件
应该是DisplayDetails
不是UserDetails
- 这个很好用:
const DisplayDetails = () => {
const submittedDataHandler = (inputData) => {
return console.log(inputData);
};
return <UserDetails onSubmitForm={submittedDataHandler} />;
};
const UserDetails = (props) => {
const [name, setName] = React.useState("");
const [age, setAge] = React.useState("");
const submittedFormhandler = (event) => {
event.preventDefault();
let userDetails = {
name: name,
age: age
};
props.onSubmitForm(userDetails);
};
const getNameHandler = (event) => {
return setName(event.target.value);
};
const getAgeHandler = (event) => {
return setAge(event.target.value);
};
return (
<form onSubmit={submittedFormhandler}>
<div>
<label htmlFor="name">User name</label>
<input type="text" name="name" id="" onChange={getNameHandler} />
</div>
<div>
<label htmlFor="age">Age</label>
<input type="number" name="age" id="" onChange={getAgeHandler} />
</div>
<button type="submit">Add User</button>
</form>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<DisplayDetails />, rootElement); // <-- RIGHT COMPONENT!!!
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>
<div id="root"></div>
- 这一个抛出像你这样的错误:
const DisplayDetails = () => {
const submittedDataHandler = (inputData) => {
return console.log(inputData);
};
return <UserDetails onSubmitForm={submittedDataHandler} />;
};
const UserDetails = (props) => {
const [name, setName] = React.useState("");
const [age, setAge] = React.useState("");
const submittedFormhandler = (event) => {
event.preventDefault();
let userDetails = {
name: name,
age: age
};
props.onSubmitForm(userDetails);
};
const getNameHandler = (event) => {
return setName(event.target.value);
};
const getAgeHandler = (event) => {
return setAge(event.target.value);
};
return (
<form onSubmit={submittedFormhandler}>
<div>
<label htmlFor="name">User name</label>
<input type="text" name="name" id="" onChange={getNameHandler} />
</div>
<div>
<label htmlFor="age">Age</label>
<input type="number" name="age" id="" onChange={getAgeHandler} />
</div>
<button type="submit">Add User</button>
</form>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<UserDetails />, rootElement); // <-- WRONG COMPONENT HERE!!!
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>
<div id="root"></div>
您的代码版本错误,应该是 DisplayDetails
: