Javascript 类型错误:props.onSaveExpenseData不是函数
我正在学习如何在React中将数据从子组件发送到父组件 收到此错误的原因:TypeError:props.onSaveExpenseData不是函数 请帮助我,因为我在学习阶段,由于这个错误,我被困在这个和 我不能继续下节课的进一步学习了 子组件中显示错误 这里是同一文件的github链接 以下是文件名为-NewExpense.js的父组件代码-Javascript 类型错误:props.onSaveExpenseData不是函数,javascript,reactjs,Javascript,Reactjs,我正在学习如何在React中将数据从子组件发送到父组件 收到此错误的原因:TypeError:props.onSaveExpenseData不是函数 请帮助我,因为我在学习阶段,由于这个错误,我被困在这个和 我不能继续下节课的进一步学习了 子组件中显示错误 这里是同一文件的github链接 以下是文件名为-NewExpense.js的父组件代码- import ExpenseForm from './ExpenseForm' import './NewExpense.css'
import ExpenseForm from './ExpenseForm'
import './NewExpense.css'
function NewExpense () {
const saveExpenseDataHandler = (enteredExpenseData)=> {
const expenseData = {
...enteredExpenseData,
id: Math.random().toString()
};
console.log(expenseData);
}
return (
<div className='expense-item'>
<ExpenseForm onSaveExpenseData={saveExpenseDataHandler}/>
</div>
)
}
export default NewExpense;
从导入ExpenseForm./ExpenseForm'
导入“./NewExpense.css”
函数NewExpense(){
const saveExpenseDataHandler=(enteredExpenseData)=>{
const expenseData={
…输入ExpenseData,
id:Math.random().toString()函数
};
控制台日志(expenseData);
}
返回(
)
}
出口违约费用;
这是文件名为ExpenseForm.js的子组件
import React, { useState } from "react";
import './ExpenseForm.css'
function ExpenseForm(props) {
const [enteredTitle,setEnteredTitle] = useState('');
const [enteredAmount,setEnteredAmount] = useState('');
const [enteredDate,setEnteredDate] = useState('');
const titleChangeHandler = (event) =>{
setEnteredTitle(event.target.value);
}
const amountChangeHandler = (event) =>{
setEnteredAmount(event.target.value);
}
const dateChangeHandler = (event) =>{
setEnteredDate(event.target.value);
}
const submitHandler = (event) => {
event.preventDefault();
const expenseData = {
title: enteredTitle,
amount: enteredAmount,
date: new Date(enteredDate)
};
props.onSaveExpenseData(expenseData); //here error arrives
console.log(expenseData);
setEnteredTitle('');
setEnteredAmount('');
setEnteredDate('');
};
return (
<form onSubmit={submitHandler}>
<div className='new-expense__controls'>
<div className='new-expense__control'>
<label>Title</label>
<input type="text"
value={enteredTitle}
onChange={titleChangeHandler} />
</div>
<div className='new-expense__control'>
<label>Amount</label>
<input type="number"
value={enteredAmount}
onChange={amountChangeHandler} min="0.01" step="0.01" />
</div>
<div className='new-expense__control'>
<label>Date</label>
<input type="date"
value={enteredDate}
onChange={dateChangeHandler} min="2020-01-01" max="2021-12-31" />
</div>
<div className='new-expense__actions'>
<button type='submit'>Add Expense</button>
</div>
</div>
</form>
);
}
export default ExpenseForm;
~~~
[1]: https://github.com/academind/react-complete-guide-code/blob/04-react-state-events/code/07-lifting-the-state-up/src/components/NewExpense/ExpenseForm.js
import React,{useState}来自“React”;
导入“./ExpenseForm.css”
功能费用表(道具){
常量[enteredTitle,setEnteredTitle]=useState(“”);
常量[enteredAmount,setEnteredAmount]=useState(“”);
常量[enteredDate,setEnteredDate]=使用状态(“”);
常量标题更改处理程序=(事件)=>{
setEnteredTitle(event.target.value);
}
常量amountChangeHandler=(事件)=>{
setEnteredAmount(event.target.value);
}
常量dateChangeHandler=(事件)=>{
setEnteredDate(event.target.value);
}
常量submitHandler=(事件)=>{
event.preventDefault();
const expenseData={
标题:Entereditle,
金额:输入金额,
日期:新日期(输入日期)
};
props.onSaveExpenseData(expenseData);//这里出现错误
控制台日志(expenseData);
setEnteredTitle(“”);
setEnteredAmount(“”);
设定值(“”);
};
返回(
标题
数量
日期
增加费用
);
}
导出默认费用表;
~~~
[1]: https://github.com/academind/react-complete-guide-code/blob/04-react-state-events/code/07-lifting-the-state-up/src/components/NewExpense/ExpenseForm.js
确保更改app.js文件并添加组件
<div>
<NewExpense onAddExpense={addExpenseHandler} />
<Expenses items={expenses} />
</div>
我看不出您的代码有任何问题。你能提供一个小的回购协议来重现你的问题吗?你的代码恰到好处,只是把它放到一个沙箱里,就像一个符咒。沙盒:单击“添加费用”按钮时出错。是否保存所有文件?你确定你没有在其他地方使用ExpenseForm吗?