Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算当前值加上进入数组的下一项?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何计算当前值加上进入数组的下一项?

Javascript 如何计算当前值加上进入数组的下一项?,javascript,reactjs,Javascript,Reactjs,我还是JavaScript和ReactJS的初学者 我有一个列表,其中显示了用户键入的一些数字。我想知道的是如何将数组中的当前值添加到用户键入的新值中 例如,如果我的数组中有一个数字5,而用户键入了数字3,那么我想添加这些值并将它们显示给用户。通过图像更容易解释: 还有我的密码 增加新价值 从“React”导入React; 从“../../providers”导入{AppContext}”; 常量添加=()=>{ const{dispatch}=React.useContext(AppCon

我还是JavaScript和ReactJS的初学者

我有一个列表,其中显示了用户键入的一些数字。我想知道的是如何将数组中的当前值添加到用户键入的新值中

例如,如果我的数组中有一个数字5,而用户键入了数字3,那么我想添加这些值并将它们显示给用户。通过图像更容易解释:

还有我的密码

增加新价值

从“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()