我正在尝试将事务添加到React中的应用程序,并且我希望按年份组织这些事务,因此结构将如下所示:在React中查询状态,并设置状态或更新(如果存在)
{
"2016" : {
"january": {
"transaction1": transaction,
"transaction2": transaction,
"transaction3": transaction
},
"february" : {
"transaction1": transaction,
"transaction2": transaction,
"transaction3": transaction
}
}
}
我在我的应用程序中有一个函数,它接收一个事务对象,然后我想将事务状态添加到相关的年/月。
addTransaction(transaction) {
const monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var year = (new Date()).getFullYear();
var month = monthNames[(new Date()).getMonth()];
console.log(
this.state.transactions != null;
);
// check year exists?
// add if necessary
// check month exists?
// add if necessary
}
什么,我试图找出是:
- 我如何查询是否存在于
transactions
状态对象的年份 - 然后我需要把它应用到正确的年份和月份如果它确实存在,或
- 添加新的年份和月份,如果它不
UPDATE: 我已经更新addTransaction
,并想创建年(在不增加每月还),然后将交易补充,但它不是在创建一年,我得到Uncaught TypeError: Cannot set property 'transaction-1453842528740' of undefined
addTransaction(transaction) {
var timestamp = (new Date()).getTime();
const monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var year = (new Date()).getFullYear();
var month = monthNames[(new Date()).getMonth()];
if (year in this.state.transactions) {
// add to year
} else {
this.state.transactions[year]['transaction-' + timestamp] = transaction;
}
this.setState({
transactions: { [year]: this.state.transactions[year] }
});
}
提前致谢。
你可以只移动了'setState'线到你的'else'块;!你不应该直接操作状态 – Mathletics