Reactjs 处于状态的变量的子对象不显示
我正在尝试打印react中父对象的数据。这是我的密码Reactjs 处于状态的变量的子对象不显示,reactjs,jsx,Reactjs,Jsx,我正在尝试打印react中父对象的数据。这是我的密码 import React from 'react'; import axios from 'axios'; class Wallet extends React.Component { constructor(){ super(); this.state = { wallets: [], updates: [] }; } c
import React from 'react';
import axios from 'axios';
class Wallet extends React.Component {
constructor(){
super();
this.state = {
wallets: [],
updates: []
};
}
componentDidMount(){
var jwt = localStorage.getItem('jwt');
axios.post('http://127.0.0.1:3000/api/wallet', {
token: jwt,
walletid: this.props.match.params.walletid
})
.then(response => {
this.setState({wallets : response.data.data});
console.log(this.state);
});
}
render(){
return (
<div className="content">
<h1>{this.state.wallets['name']}</h1>
<div className="wallets">
<table className="classic">
<thead>
<tr>
<th>Wallet</th>
<th>Balance</th>
</tr>
</thead>
<tbody>
<tr>
<td>{this.state.wallets.wallet_updates.xxx}- he</td>
</tr>
</tbody>
</table>
</div>
</div>
)
}
}
export default Wallet
从“React”导入React;
从“axios”导入axios;
类。组件{
构造函数(){
超级();
此.state={
钱包:[],
更新:[]
};
}
componentDidMount(){
var jwt=localStorage.getItem('jwt');
轴心柱http://127.0.0.1:3000/api/wallet', {
令牌:jwt,
walletid:this.props.match.params.walletid
})
。然后(响应=>{
this.setState({wallets:response.data.data});
console.log(this.state);
});
}
render(){
返回(
{this.state.wallets['name']}
钱包
平衡
{this.state.wallets.wallet\u updates.xxx}-he
)
}
}
导出默认钱包
我不知道为什么,但每当我调用wallet_updates.xxx时,它都会说无法调用未定义的xxx,即使我已检查过,并且它肯定存在于该状态中。我还尝试将特定的子对象放在另一个状态对象中,但这似乎也不起作用。我怀疑这发生在第一次渲染时,您的状态树不正确。 您已经将您的状态设置为数组,但您正在使用它们,就好像它们是对象一样 这里,
this.state.wallets.wallet\u updates.xxx
,确实是未定义的
更好的办法是创建一个更具代表性的初始状态
this.state = {
wallets: { name: 'n/a', wallet_updates: {} },
updates: []
};
这将帮助您查找更多的bug,因为它更符合您试图使用
setState
s执行的操作。不确定为什么在componentDidMount()中调用This.setState()
两次。此外,您在当地州注意到,wallet
是一个数组,但您正在访问一个名为wallet\u update
的属性,我不知道该属性;I don’我不认为这是你想要做的,是一个更高版本的代码,忘记了仅仅把它全部放在一个setstate语句中,没有那一行仍然不起作用,尽管=/你的状态设置了数组,但是你在数组上设置属性就像它们是对象一样。是的,我同意。您的钱包
状态是一个数组。所以,也许你想让你的状态与你在this.setState()中所做的事情保持一致,我不知道我怎么会错过了这么愚蠢的事情,我一整天都在努力解决这个问题,谢谢你,伙计,我成功了!真不敢相信我错过了当我可以的时候,我将标记为解决方案