【问题标题】:Push new key/value to state with hooks - React用钩子推送新的键/值来状态 - React
【发布时间】:2021-07-01 09:21:06
【问题描述】:

我正在尝试使用钩子将一对键/值(来自 2 个输入)推送到现有状态。

这是我的 JSX:

<div className="mt-2 text-left flex flex-wrap">
                        <fieldset>
                            <label htmlFor="newIncomeName"></label>
                            <input className="w-32 border italic p-1 text-gray-500 text-xs" id="newIncomeName"
                                name="newIncomeName"
                                type="text"
                            />

                            <label htmlFor="newIncomeAmount"></label>
                            <input className="w-32 border italic p-1 text-gray-500 text-xs" id="newIncomeAmount"
                                name="newIncomeAmount"
                                type="number"
                            />
                        </fieldset>
                        <button onClick={handleAddIncome}>
                            <i className="fas fa-check text-gray-400 hover:text-green-500 text-xs mt-1 p-1"></i>
                        </button>
                    </div>

这是我的功能:

  const handleAddIncome = () => {
        let incomeName = document.getElementById('newIncomeName').value
        let incomeAmount = document.getElementById('newIncomeAmount').value
        let data = [
            [incomeName], incomeAmount
        ]
        setUserWalletIncomes({ ...userWalletIncomes, data })
}

如您所见,我希望incomeName 成为键,incomeAmount 成为值。

我的实际状态是这样的:

{income1: 1300, income2: 1300, income3: 1300, incometest: 400}

我的功能不起作用,它创建了一个名为“数据”的键,并且金额反应不佳。在第一次点击时,它会很好地推送,但在第二次点击时,它会删除最后一次推送,而不是添加新的推送。

我是新来的钩子。谢谢你的帮助????

【问题讨论】:

  • 你能分享更多使用定义钩子的代码吗?

标签: reactjs react-hooks state


【解决方案1】:

您需要将数据更改为对象:

let data = {
  [incomeName]: incomeAmount
}

setUserWalletIncomes({ ...userWalletIncomes, ...data })

【讨论】:

  • 它的工作原理谢谢。为什么 data 这里需要扩展运算符?
  • 因为data也是一个对象。您需要使用扩展运算符将对象userWalletIncomes 和对象data 合并为一个新对象
猜你喜欢
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 2020-01-01
  • 1970-01-01
  • 2020-03-07
相关资源
最近更新 更多