Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Reactjs 处于状态的变量的子对象不显示_Reactjs_Jsx - Fatal编程技术网

Reactjs 处于状态的变量的子对象不显示

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

我正在尝试打印react中父对象的数据。这是我的密码

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()中所做的事情保持一致,我不知道我怎么会错过了这么愚蠢的事情,我一整天都在努力解决这个问题,谢谢你,伙计,我成功了!真不敢相信我错过了当我可以的时候,我将标记为解决方案