javascript - 如何计算当前值加上进入数组的下一项?
问题描述
我还是 JavaScript 和 ReactJS 的初学者。
我有一个列表,其中显示了用户键入的一些数字。我想知道的是如何将数组中存在的当前值添加到+
用户键入的新值中。
例如,如果我的数组中有一个数字 5,并且用户键入数字 3,我想添加这些值并将它们显示给用户。通过一张图更容易解释:
这是我的代码。
添加新价值
import React from "react";
import { AppContext } from "../../providers";
const Add = () => {
const { dispatch } = React.useContext(AppContext);
const [transaction, setTransaction] = React.useState(0);
const onChangeValue = (e) => {
setTransaction(+e.target.value);
};
const onTransactions = () => {
if (transaction === 0) return;
dispatch({
type: "ADD_TRANSACTION",
payload: transaction
});
setTransaction(0);
};
return (
<div>
<h3>New transaction</h3>
<div>
<div>
<input type="number" value={transaction} onChange={onChangeValue} />
</div>
</div>
<div style={{ margin: "20px 0" }}>
<button type="button" onClick={onTransactions}>
Submit
</button>
</div>
</div>
);
};
export default Add;
列出结果:
import React from "react";
import { AppContext } from "../../providers";
const List = () => {
const { state } = React.useContext(AppContext);
return (
<div>
{state.transactions.map((transaction) => (
<div>
<span>
-You add ${transaction}, your balance is: ${transaction}
</span>
</div>
))}
</div>
);
};
export default List;
非常感谢您的帮助!!!
解决方案
如果您保持总余额和流动余额:
const initialState = {
balance:0,
transactions: []
};
const reducer = (state, action) => {
switch (action.type) {
case "ADD_TRANSACTION":
return {
...state,
balance: state.balance + action.payload,
transactions: [{value:action.payload,balance:state.balance+action.payload}, ...state.transactions]
};
default:
return state;
}
};
您可以在列表视图中呈现这些
const List = () => {
const { state } = React.useContext(AppContext);
return (
<div>
{state.transactions.map((transaction) => (
<div>
<span>
-You add ${transaction.value}, your balance is: ${transaction.balance}
</span>
</div>
))}
</div>
);
};
推荐阅读
- angular - FormBuilder 组已弃用
- cassandra - 安装后无法访问 Cassandra NoSQL DB
- python - __init__() 得到了一个意外的关键字参数“book_category”
- java - 让用户在 Java 中放置按钮
- symfony - Symfony Webpack Encore 高级/自定义配置
- python - 你如何用python按住左键?
- go - /var 上的 os.Lstat Mode().IsDir() 方法产生 false
- python - Python smtplib ssl 套接字需要很长时间才能创建
- angular - Angular http 发布并等待多个结果
- node.js - 从导出函数调用普通函数,但返回结果未正确投影