React Base Fiddle (JSX)
Starting point for creating JSFiddles with React.
by mosiaonline
HTML
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root">
<!-- This element's contents will be replaced with your component. -->
</div>
Babel + JSX
function Transaction(props){
const [listOfExpenses, setlistOfExpenses] = React.useState([]);
const [expense, setExpense] = React.useState("");
const [amount, setAmount] = React.useState(0);
const [totalExpenditure, setTotalExpenditure] = React.useState(0);
const handleInputChange = (hookSetterMethod) => (e) =>{
let {value} = e.targett;
return hookSetterMethod(value);
}
const addExpense = (expenseObject) => {
setlistOfExpenses([...listOfExpenses, expenseObject])
}
const getTotalExpenditure = (listOfExpenses) =>
{
if(listOfExpenses.length > 0)
{
let tempExpenseAmountList = listOfExpenses.map((expense, id)=>{
if(expense.amount)
{
return expense.amount;
}else{
return 0;
}
});
return tempExpenseAmountList.reduce((accumulator, currentVal)=>{
return Number(accumulator) + Number(currentVal);
})
}
return 0;
}
React.useEffect(()=>{
setTotalExpenditure(getTotalExpenditure(listOfExpenses));
}, [listOfExpenses])
const handleFormSubmission = (e) =>{
e.preventDefault();
addExpense({
amount,
expense
});
}
return(
<div>
<div>
<form onSubmit={handleFormSubmission}>
<div>
<label>Expense</label>
<input value={expense} onChange={handleInputChange(setExpense)} />
</div>
<div>
<label>Amount</label>
<input value={amount} onChange={handleInputChange(setAmount)} />
</div>
<div>
<button type="submit">Add Expense</button>
</div>
</form>
</div>
<div>
...