Javascript 如何计算当前值加上进入数组的下一项?
我还是JavaScript和ReactJS的初学者 我有一个列表,其中显示了用户键入的一些数字。我想知道的是如何将数组中的当前值添加到用户键入的新值中 例如,如果我的数组中有一个数字5,而用户键入了数字3,那么我想添加这些值并将它们显示给用户。通过图像更容易解释: 还有我的密码 增加新价值Javascript 如何计算当前值加上进入数组的下一项?,javascript,reactjs,Javascript,Reactjs,我还是JavaScript和ReactJS的初学者 我有一个列表,其中显示了用户键入的一些数字。我想知道的是如何将数组中的当前值添加到用户键入的新值中 例如,如果我的数组中有一个数字5,而用户键入了数字3,那么我想添加这些值并将它们显示给用户。通过图像更容易解释: 还有我的密码 增加新价值 从“React”导入React; 从“../../providers”导入{AppContext}”; 常量添加=()=>{ const{dispatch}=React.useContext(AppCon
从“React”导入React;
从“../../providers”导入{AppContext}”;
常量添加=()=>{
const{dispatch}=React.useContext(AppContext);
const[transaction,setTransaction]=React.useState(0);
const onchange value=(e)=>{
setTransaction(+e.目标值);
};
const onTransactions=()=>{
如果(事务===0)返回;
派遣({
类型:“添加交易”,
有效载荷:事务
});
setTransaction(0);
};
返回(
新交易
提交
);
};
导出默认添加
这在本地事务
状态中相对简单,因为您可以通过传递函数而不是值来访问setTransaction
调用中事务
的当前值
const onChangeValue=(e)=>{
setTransaction(state=>state+e.target.value);/`state`这是更新前的值
};
从该回调返回的任何内容都将成为事务的新值
从外观上看,将这些值存储在上下文中的数组中这一事实并不重要,当然,除非您打算将这些现有值用作以后事务的开始状态(即,多个提交事件之间不重置为零)
如果是这种情况,并且我理解正确,那么您需要映射上下文状态中的每个项,并将本地存储的事务添加到这些值中。比如:
const-onTransactions=()=>{
如果(事务===0)返回;
派遣({
类型:“添加交易”,
有效负载:state.transactions.map(val=>val+transaction)
});
setTransaction(0);
};
这将向您上下文中的每个值添加新值(假设您的上下文有一个处理程序,它正在执行我认为它正在执行的操作)。只需为所有输入和的总量清除另一个变量即可
const [transaction, setTransaction] = React.useState(0);
const [totalAmount, setTotalAmount] = React.useState(0);
const onChangeValue = (e) => {
setTransaction(e.target.value);
setTotalAmount(ParseInt(totalAmount) + ParseInt(e.target.value))
};
const [transaction, setTransaction] = React.useState([]);
const [totalAmount, setTotalAmount] = React.useState(0);
const onChangeValue = (e) => {
let newtransaction = transaction
newtransaction.push({value: e.target.value, amount: totalAmount +
ParseInt(e.target.value)})
setTransaction(newtransaction);
setTotalAmount(totalAmount + ParseInt(e.target.value))
};
您的渲染jx将是
<span>
-You add ${transaction}, your balance is: ${totalAmount}
</span>
transaction.map(trans =>
<span>
-You add ${trans.value}, your balance is: ${trans.amount}
</span>
)
-添加${transaction},余额为:${totalAmount}
如果您保持总余额和流动余额:
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>
);
};
const List=()=>{
const{state}=React.useContext(AppContext);
返回(
{state.transactions.map((事务)=>(
-添加${transaction.value},余额为:${transaction.balance}
))}
);
};
只需为所有输入总和的总额清除另一个变量
const [transaction, setTransaction] = React.useState(0);
const [totalAmount, setTotalAmount] = React.useState(0);
const onChangeValue = (e) => {
setTransaction(e.target.value);
setTotalAmount(ParseInt(totalAmount) + ParseInt(e.target.value))
};
const [transaction, setTransaction] = React.useState([]);
const [totalAmount, setTotalAmount] = React.useState(0);
const onChangeValue = (e) => {
let newtransaction = transaction
newtransaction.push({value: e.target.value, amount: totalAmount +
ParseInt(e.target.value)})
setTransaction(newtransaction);
setTotalAmount(totalAmount + ParseInt(e.target.value))
};
您的渲染jx将是
<span>
-You add ${transaction}, your balance is: ${totalAmount}
</span>
transaction.map(trans =>
<span>
-You add ${trans.value}, your balance is: ${trans.amount}
</span>
)
transaction.map(trans=>
-添加${trans.value},余额为:${trans.amount}
)
使用累加器Array.reduce()